C#创建一个控件数组

时间:2010-01-30 15:29:57

标签: c# winforms user-interface components

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

2 个答案:

答案 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;
}