C# создают массив средств управления

Действительно ли возможно создать массив средств управления? Существует ли способ получить индекс управления, если больше чем одни из средств управления в массиве совместно используют тот же обработчик событий?

5
задан Kevin 30 January 2010 в 15:41
поделиться

2 ответа

Это, безусловно, возможно сделать. Совместное использование обработчика событий довольно легко сделать в этом случае, потому что кнопка , которая подняла событие, отправляется как часть события ARGS. Это будет отправитель значение и может быть отбран к кнопке

Вот какой-то пример код

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;
    ...
  }
}
7
ответ дан 13 December 2019 в 19:27
поделиться

На основе комментария Кевинса:

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

void Button_Click(object sender, EventArgs e)
{
    Button clickedButton = sender as Button;
}
4
ответ дан 13 December 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: