Действительно ли возможно создать массив средств управления? Существует ли способ получить индекс управления, если больше чем одни из средств управления в массиве совместно используют тот же обработчик событий?
Это, безусловно, возможно сделать. Совместное использование обработчика событий довольно легко сделать в этом случае, потому что кнопка
, которая подняла событие, отправляется как часть события 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;
...
}
}
На основе комментария Кевинса:
foreach(Button b in MyForm.Controls.OfType<Button>())
{
b.Click += Button_Click;
}
void Button_Click(object sender, EventArgs e)
{
Button clickedButton = sender as Button;
}