C # эквивалент VB.NET 'Обрабатывает button1.Click, button2.Click' - PullRequest
7 голосов
/ 23 ноября 2011

В VB.NET Я могу сделать

private sub button_click(sender, e) handles Button1.Click, Button2.Click etc...
do something...
end sub

Есть ли способ для этого в C # .NET?У меня примерно 16 кнопок, которые все вызывают одну и ту же функцию, просто передавая текст кнопки функции.Я бы предпочел, чтобы 16 private void button_clicks не вызывали одну функцию.

Хотя я не уверен, как это сделать (многим не знаком с C #).

Ответы [ 6 ]

10 голосов
/ 23 ноября 2011
Button1.Click += button_click;
Button2.Click += button_click;
7 голосов
/ 23 ноября 2011

Вручную вы можете сделать это:

button1.Click += button_Click;
button2.Click += button_Click;
...

В конструкторе свойство события Click - это фактически раскрывающееся меню, в котором вы можете выбрать один из существующих методов с соответствующей сигнатурой.

5 голосов
/ 23 ноября 2011

C # не имеет ключевого слова Handles.
Вместо этого вам нужно явно добавить обработчики:

something.Click += button_click;
somethingElse.Click += button_click;
4 голосов
/ 23 ноября 2011

Попробуйте это:

button1.Click += button_click;
button2.Click += button_click;
2 голосов
/ 06 октября 2013

Если вы хотите, чтобы его можно было обслуживать, я бы выбрал что-то вроде этого:

//btnArray can also be populated by traversing relevant Controls collection(s)
Button[] btnArray = new Button[] {button1, button2};
foreach(Button btn in btnArray) {
  btn.Click += button_Click;
}

Любой рефакторинг этого кода выполняется через одну точку обслуживания.Например:

  • Вы решаете связать пользовательский класс кнопок с пользовательским событием, например, MyClick.
  • Вы решаете изменить логику сбора кнопок, добавлять или удалять кнопки.
  • Вы полагаете, что button_Click является недопустимым именем или вам требуется условная привязка событий.
1 голос
/ 23 ноября 2011
btn1.Click += button_click;
btn2.Click += button_click;

ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...