是否可以创建一系列控件?如果数组中的多个控件共享同一个事件处理程序,有没有办法获取控件的索引?
答案 0 :(得分:7)
这当然可以做到。在这种情况下,共享事件处理程序相当容易,因为引发事件的Button
是作为事件args的一部分发送的。它将是sender
值,可以转换为Button
以下是一些示例代码
class Form1 : Form {
private Button[] _buttons;
public Form1(int count) {
_buttons = new Button[count];
for ( int i = 0; i < count; i++ ) {
var b = new Button();
b.Text = "Button" + i.ToString()
b.Click += new EventHandler(OnButtonClick);
_buttons[i] = b;
}
}
private void OnButtonClick(object sender, EventArgs e) {
var whichButton = (Button)sender;
...
}
}
答案 1 :(得分:4)
基于Kevins评论:
foreach(Button b in MyForm.Controls.OfType<Button>())
{
b.Click += Button_Click;
}
void Button_Click(object sender, EventArgs e)
{
Button clickedButton = sender as Button;
}