Обработка события элемента управления (Windows Forms .NET)
События элементов управления (и для форм) обычно задаются с помощью Visual Studio Visual Designer для Windows Forms. Настройка события через визуальный конструктор называется обработкой события во время разработки. Вы также можете динамически обрабатывать события в коде, известном как обработка событий во время выполнения. Событие, созданное во время выполнения, позволяет динамически подключать обработчики событий на основе текущих действий приложения.
Обработка события — дизайнер
В Visual Studio используйте Visual Designer для управления обработчиками событий управления. Visual Designer создаст код обработчика и добавит его в событие.
Настройка обработчика
Используйте панель свойств , чтобы добавить или задать обработчик события.
Откройте визуальный конструктор формы, содержащей элемент управления для изменения.
Выберите элемент управления.
Измените режим панели свойств на режим панели событий , нажав кнопку "События" (
).
Найдите событие, в которое нужно добавить обработчик, например, событие Click:
Выполните одно из следующих действий:
Чтобы создать новый обработчик, дважды щелкните событие; если обработчик не назначен, он будет пустым. Если поле не пустое, это действие откроет код формы и перейдет к уже существующему обработчику.
Используйте поле выбора (
) для выбора существующего обработчика.
В поле выбора будут перечислены все методы, имеющие совместимую сигнатуру метода для обработчика событий.
Очистка обработчика
Чтобы удалить обработчик событий, недостаточно просто удалить код обработчика в файле кода формы, так как событие продолжит на него ссылаться. Используйте панель свойств , чтобы удалить обработчик события:
Откройте визуальный конструктор формы, содержащей элемент управления для изменения.
Выберите элемент управления.
Измените режим области свойств
на события , нажав кнопку событий (). Найдите событие, содержащее обработчик, который нужно удалить, например событие Click:
Щелкните событие правой кнопкой мыши и выберите Сброс.
Обработка события — программный код
Обычно обработчики событий добавляются в элементы управления во время разработки через визуальный конструктор. Однако можно создавать элементы управления во время выполнения, что требует добавления обработчиков событий в код. Добавление обработчиков в код также дает возможность добавить несколько обработчиков в одно событие.
Добавить обработчик
В следующем примере показано, как создать элемент управления и добавить обработчик событий. Этот элемент управления создается в обработчике событий Button.Click
другой кнопкой. При нажатии Button1. Код перемещает и изменяет размер новой кнопки. Событие Click
новой кнопки обрабатывается методом MyNewButton_Click
. Для появления новой кнопки её добавляют в коллекцию Controls
формы. Существует также код для удаления обработчика события Button1.Click
, это рассматривается в разделе Remove the handler.
private void button1_Click(object sender, EventArgs e)
{
// Create and add the button
Button myNewButton = new()
{
Location = new Point(10, 10),
Size = new Size(120, 25),
Text = "Do work"
};
// Handle the Click event for the new button
myNewButton.Click += MyNewButton_Click;
this.Controls.Add(myNewButton);
// Remove this button handler so the user cannot do this twice
button1.Click -= button1_Click;
}
private void MyNewButton_Click(object sender, EventArgs e)
{
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Create and add the button
Dim myNewButton As New Button() With {.Location = New Point(10, 10),
.Size = New Size(120, 25),
.Text = "Do work"}
'Handle the Click event for the new button
AddHandler myNewButton.Click, AddressOf MyNewButton_Click
Me.Controls.Add(myNewButton)
'Remove this button handler so the user cannot do this twice
RemoveHandler Button1.Click, AddressOf Button1_Click
End Sub
Private Sub MyNewButton_Click(sender As Object, e As EventArgs)
End Sub
Чтобы запустить этот код, выполните следующие действия в форме с помощью Visual Studio Visual Designer:
- Добавьте новую кнопку в форму и назовите ее Button1.
- Измените режим области свойств на события, нажав кнопку события (
).
- Дважды щелкните событие Click, чтобы создать обработчик. Это действие открывает окно кода и создает пустой метод
Button1_Click
. - Замените код метода предыдущим кодом выше.
Дополнительные сведения о событиях C# см. в События (C#). Дополнительные сведения о событиях Visual Basic см. в События (Visual Basic).
Удалите обработчик
В разделе Добавление обработчика использовался некоторый код для демонстрации добавления обработчика. Этот код также содержал вызов для удаления обработчика:
button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click
Этот синтаксис можно использовать для удаления любого обработчика событий из любого события.
Дополнительные сведения о событиях C# см. в
Как использовать несколько событий с одинаковым обработчиком
В области свойств среды Visual Studio можно выбрать тот же обработчик, который уже используется другим событием. Следуйте указаниям в разделе Настройка обработчика, чтобы выбрать существующий обработчик вместо создания нового.
В C# обработчик присоединяется к событию элемента управления в коде конструктора формы, который изменяется с помощью Visual Designer. Дополнительные сведения о событиях в C# см. в События (C#)
Visual Basic
В Visual Basic обработчик присоединяется к событию элемента управления в файле кода формы, где объявляется код обработчика событий. Несколько ключевых слов Handles
можно добавить в код обработчика событий, чтобы использовать его с несколькими событиями. Визуальный конструктор создаст ключевое слово Handles
для вас и добавит его в обработчик событий. Однако вы можете легко сделать это самостоятельно для любого события и обработчика события элемента управления, если сигнатура метода обработчика совпадает с событием. Дополнительные сведения о событиях Visual Basic см. в разделе События (Visual Basic)
В этом коде показано, как один и тот же метод можно использовать в качестве обработчика для двух различных событий Button.Click
:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
'Do some work to handle the events
End Sub
См. также
.NET Desktop feedback