2009-05-20 10 views
1

これは私がこれがしたいものの主要なジストです。イベントが発生したときにクリックされたオブジェクトはどれですか?

public Form1() 
    { 
     InitializeComponent(); 

     Button b1 = new Button(); 
     b1.Parent = this; 
     b1.Name = "btnA"; 
     b1.Text = "Button A"; 
     b1.Click += new EventHandler(button_Click); 
     b1.Show(); 

     Button b2 = new Button(); 
     b2.Parent = this; 
     b2.Name = "btnB"; 
     b2.Text = "Button B"; 
     b2.Click += new EventHandler(button_Click); 
     b2.Show(); 
    } 

    private void button_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Button A or Button B was Clicked?"); 
    } 

下図のように私は私がクリックした、と明らかにクリックされたそのボタンを操作されたボタンを知っている必要があり、私のフォーム初期化子で2つのボタンを作成しました。

クリックされたボタンのテキストを変更するようなものでも。

私たちはオブジェクト送信者がイベントが発生したボタンにアクセスすることができますが、正しいボタンを操作するために送信者を使用する方法はわかりません。

Button button = sender as Button; 
if(button != null) 
{ 
    MessageBox.Show("Button " + button.Name + " was clicked"); 
} 
else 
{ 
    MessageBox.Show("Not a button?"); 
} 

答えて

4

ちょうどButtonsenderをキャストapreciatedされますメッセージを送信したオブジェクトを提供します。ボタンにキャストすることができます。

var clickedButton = (Button) sender; 
+0

ありがとうございました。ダムは速かった:D –

1

senderパラメータは、イベントを発生させたオブジェクトである:

任意の方向やヘルプは、おかげで

+0

ありがとう。問題の悪夢を解決する –

0

送信者対象:

private void button_Click(object sender, EventArgs e) 
{ 
    Button clicked = (Button) sender; 
    MessageBox.Show("Button " + clicked.Name + " was Clicked."); 
} 
関連する問題