如何管理在运行时创建的WinForms按钮的委托?

时间:2012-11-18 21:37:21

标签: c# winforms events

让我们看看下面的代码,其中我正在创建一个按钮列表。

List<System.Windows.Forms.Button> buttons = new List<System.Windows.Forms.Button>(); 

for(int i = 0; i < 5; i++) {
    buttons.Add(  System.Windows.Forms.Button>()  );
    buttons[i].Name = "button_" + i.ToString();
    this.Controls.Add(buttons[i]);
    buttons[i].Click += new System.EventHandler(this.Bt_windowClick);
}

下一部分是我困惑的地方。当这个委托被调用时,我想告诉我实际点击了哪个按钮。我该怎么做?

void Bt_windowClick(object sender, EventArgs e)
{
    // I would like to get the name of the button that was clicked
}

提前感谢您的支持!

1 个答案:

答案 0 :(得分:4)

发件人对象是一个按钮,它引发了事件。因此,只需将其转换为Button类型:

void Bt_windowClick(object sender, EventArgs e)
{
    Button button = (Button)sender;
    // use button
    MessageBox.Show(button.Name);
}