Простой, в каждом событии в winforms отправителем является объект, вызвавший событие.
Button button1 = new Button() {...}
Button button2 = new Button() {...}
button1.OnClicked += this.OnButtonClicked;
button2.OnClicked += this.OnButtonClicked;
// both buttons will call OnButtonClicked when pressed
Вы можете сделать это также в Visual Studio Designer, в окне свойств, используя вкладку, помеченную молнией.вспышка.Просто выберите функцию, которую вы использовали ранее.
private void OnButtonClicked(object sender, EventArgs e)
{
Button button = (Button)sender;
// now you know which button was clicked
...
}
Будьте осторожны, если вы позволите другим элементам также вызывать этот четный обработчик
ListBox listBox = new ListBox();
listBox.OnClicked += this.OnButtonClicked;
private void OnButtonClicked(object sender, EventArgs e)
{
// sender can be either a Button or a ListBox:
switch (sender)
{
case Button button:
ProcesButtonPressed(button);
break;
case ListBox listBox:
ProcessListBoxPressed(listBox);
break;
}
}
Этот оператор switch может быть новым для вас.См. Сопоставление с образцом в C # 7