Обработка события элемента управления (Windows Forms .NET)
События для элементов управления (и для форм) обычно задаются с помощью визуального конструктора Visual Studio для Windows Forms. Настройка события с помощью визуального конструктора называется обработкой события во время разработки. Вы также можете динамически обрабатывать события в коде - это называется обработкой событий во время выполнения. Событие, созданное во время выполнения, позволяет динамически подключать обработчики событий на основе текущих действий приложения.
Обработка события — конструктор
В Visual Studio используйте визуальный конструктор для управления обработчиками событий элементов управления. Визуальный конструктор создаст код обработчика и добавит его в событие.
Установка обработчика
Используйте панель Свойства, чтобы добавить или задать обработчик события:
Откройте визуальный конструктор формы, содержащей элемент управления, который нужно изменить.
Выберите элемент управления.
Измените режим панели Свойства на События, нажав кнопку событий ().
Найдите событие, к которому нужно добавить обработчик, например событие Click:
Выполните одно из следующих действий:
Дважды щелкните событие, чтобы создать новый обработчик. Оно пусто, если обработчик не назначен. Если оно не пусто, это действие открывает код формы и переходит к существующему обработчику.
Используйте поле выбора () для выбора существующего обработчика.
В поле выбора будут перечислены все методы, имеющие совместимую сигнатуру метода для обработчика событий.
Очистка обработчика
Чтобы удалить обработчик событий, нельзя просто удалить код обработчика, который находится в файле кода программной части формы, на него по-прежнему ссылается событие. Используйте панель Свойства, чтобы удалить обработчик события:
Откройте визуальный конструктор формы, содержащей элемент управления, который нужно изменить.
Выберите элемент управления.
Измените режим панели Свойства на События, нажав кнопку событий ().
Найдите событие, содержащее обработчик, который требуется удалить, например событие Click:
Щелкните событие правой кнопкой мыши и выберите Сбросить.
Обработка события - код
Обычно обработчики событий добавляются в элементы управления во время разработки с помощью визуального конструктора. Однако, можно создавать элементы управления во время выполнения, что требует добавления обработчиков событий в код. Добавление обработчиков в код также дает возможность добавить несколько обработчиков в одно и то же событие.
Добавление обработчика
В следующем примере показано, как создать элемент управления и добавить обработчик событий. Этот элемент управления создается в обработчике событий Button.Click
другой кнопкой. При нажатии Кнопки1. Код перемещает новую кнопку и изменяет ее размер. Событие новой кнопки Click
обрабатывается методом MyNewButton_Click
. Чтобы появилась новая кнопка, она добавляется в коллекцию формы Controls
. Существует также код для удаления обработчика события Button1.Click
, который рассматривается в разделе Удаление обработчика.
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:
- Добавьте новую кнопку в форму и назовите ее Кнопка1.
- Измените режим панели Свойства на События, нажав кнопку событий ().
- Дважды щелкните по событию Нажать, чтобы создать обработчик. Это действие открывает окно кода и создает пустой метод
Button1_Click
. - Замените код метода приведенным выше кодом.
Дополнительные сведения о событиях C# см. в разделе События (C#). Дополнительные сведения о событиях Visual Basic см. в разделе События" (Visual Basic)
Удаление обработчика
В разделе Добавление обработчика использовался код для демонстрации добавления обработчика. Этот код также содержит вызов для удаления обработчика:
button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click
Этот синтаксис можно использовать для удаления любого обработчика событий из любого события.
Дополнительные сведения о событиях C# см. в разделе События (C#). Дополнительные сведения о событиях Visual Basic см. в разделе События" (Visual Basic)
Использование нескольких событий с одним и тем же обработчиком
На панели Свойства визуального конструктора Visual Studio можно выбрать тот же обработчик, который уже используется другим событием. Следуйте указаниям в разделе Настройка обработчика, чтобы выбрать существующий обработчик вместо создания нового.
В C# обработчик присоединяется к событию элемента управления в коде конструктора формы, который был изменен с помощью визуального конструктора. Дополнительные сведения о событиях C# см. в разделе Events (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