触发事件时单击了哪个对象?

时间:2009-05-20 09:09:38

标签: c# winforms

这是我想要做的主要问题。

我在Form Initializer中创建了两个按钮,如下所示

    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?");
    }

我需要知道单击了哪个按钮,并且显然操纵了单击的按钮。

甚至可以更改单击按钮的文本。

我非常谨慎,我们可以使用对象发件人来访问触发事件的按钮但是不知道如何使用发件人来操作正确的按钮。

任何指示或帮助都将受到赞赏

3 个答案:

答案 0 :(得分:4)

只需将sender投射到Button

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

答案 1 :(得分:1)

sender参数是引发事件的对象:

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

答案 2 :(得分:0)

发件人对象将为您提供发送邮件的对象。你可以将它投射到按钮上。

var clickedButton = (Button) sender;