C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: メソッドの引数としてオブジェクトを渡す。


(過去ログ 85 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■51040 / inTopicNo.1)  メソッドの引数としてオブジェクトを渡す。
  
□投稿者/ azure (1回)-(2010/06/24(Thu) 00:21:30)

分類:[C#] 

C#にてボタンを押したときの処理を下記のように記述しようとしています。
例示したのは2つのボタンですが、ボタンは計12個ほどあります。
したがって、これらの処理を行わせるメソッドを記述し、
それらを読み込ませようとしたのですが、上手くいきませんでした。
引数に数値や文字列を使用したことは有るのですが、オブジェクトを渡したことがなく、
教科書やネットで一時間ほど調べてみたのですが、探し方が悪かったのか、上手い例が見つかりませんでした。
どのように渡せばいいのかお教えいただけましたら幸いです。

処理の例↓

private void button2_Click(object sender, EventArgs e){
if (button2.BackColor != Color.Black){
button2.BackColor = Color.Black;
}
}

private void button3_Click(object sender, EventArgs e){
if (button3.BackColor != Color.Black){
button3.BackColor = Color.Black;
}
}

このように記述しようとしたが失敗した↓
private void button4_Click(object sender, EventArgs e){
push_but(button4);
}

static void push_but(object ob){
if (ob.BackColor != Color.Black){
ob.BackColor = Color.Black;
}
}
引用返信 編集キー/
■51041 / inTopicNo.2)  Re[1]: メソッドの引数としてオブジェクトを渡す。
□投稿者/ Azulean (571回)-(2010/06/24(Thu) 00:25:01)
> static void push_but(object ob){
> if (ob.BackColor != Color.Black){
> ob.BackColor = Color.Black;
> }
> }
object 型には BackColor というプロパティがないからでしょう。
そういった主旨のエラーが出ていませんでしたか?
今回の場合、object 型ではなく、Button 型で引数を受ければ良いでしょう。

ただ、まだ最適化する余地はあると思います。
たとえば、一つのイベントハンドラをすべてのボタンの Click イベントに割り当てて、sender を Button 型にキャストするといった手が考えられます。
引用返信 編集キー/
■51043 / inTopicNo.3)  Re[1]: メソッドの引数としてオブジェクトを渡す。
□投稿者/ YAS (5回)-(2010/06/24(Thu) 00:27:08)
2010/06/24(Thu) 00:28:01 編集(投稿者)

push_but(object ob)をpush_but(Button ob)とすれば良いのでは?

編集:あらら,ダブってしまいました。ごめんなさい。
引用返信 編集キー/
■51045 / inTopicNo.4)  Re[2]: メソッドの引数としてオブジェクトを渡す。
□投稿者/ azure (2回)-(2010/06/24(Thu) 00:40:14)
Azuleanさん、YASさんお教えいただきましてありがとうございます。
Button型というのがあるのですね。
いま、ソースコードを書き換えてちゃんと動くことを確認しました。ありがとうございます。

>一つのイベントハンドラをすべてのボタンの Click イベントに割り当てて、sender を Button 型にキャストするといった手が考えられます
との記述に関してはあまり理解できていませんが、明日にでも調べてみたいと思います。

まずは御礼述べさせていただきます。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -