C#创建一个控件数组

C#创建一个控件数组,c#,winforms,user-interface,components,C#,Winforms,User Interface,Components,是否可以创建控件数组?如果数组中的多个控件共享同一事件处理程序,是否有方法获取控件的索引?基于Kevins注释: foreach(Button b in MyForm.Controls.OfType<Button>()) { b.Click += Button_Click; } 这当然是可能的。在这种情况下,共享事件处理程序相当容易,因为引发事件的按钮作为事件参数的一部分发送。它将是发送者的值,并且可以回退到按钮 下面是一些示例代码 class Form1 : Form {

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

基于Kevins注释:

foreach(Button b in MyForm.Controls.OfType<Button>())
{
    b.Click += Button_Click;
}

这当然是可能的。在这种情况下,共享事件处理程序相当容易,因为引发事件的
按钮作为事件参数的一部分发送。它将是
发送者
的值,并且可以回退到
按钮

下面是一些示例代码

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:表单{
专用按钮[]\u按钮;
公共表格1(整数计数){
_按钮=新按钮[计数];
for(int i=0;i
请定义组件。也许一个代码示例会有所帮助。例如:我希望表单上有30个按钮共享相同的单击事件单击事件的发件人参数将是生成单击的按钮,因此获取索引将是
Array.IndexOf(buttonArray,sender)
引用Microsoft.VisualBasic名称空间不会有什么作用,因为它有办法使用控件数组?这个解决方案适合我。这正是我要找的。
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;
    ...
  }
}