C#创建一个控件数组

是否可以创建一个控件数组? 如果数组中的多个控件共享同一个事件处理程序,有没有办法获取控件的索引?

这当然是可以做到的。 在这种情况下,共享事件处理程序相当容易,因为引发事件的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; ... } } 

基于Kevins评论:

 foreach(Button b in MyForm.Controls.OfType 

 void Button_Click(object sender, EventArgs e) { Button clickedButton = sender as Button; }