Поделиться через


Обработка события управления

События элементов управления (и для форм) обычно задаются с помощью Visual Studio Visual Designer для Windows Forms. Настройка события через визуальный конструктор называется обработкой события во время разработки. Вы также можете динамически обрабатывать события в коде, известном как обработка событий во время выполнения. Событие, созданное во время выполнения, позволяет динамически подключать обработчики событий на основе того, что в настоящее время делает ваше приложение.

Обработка события на этапе разработки дизайна

В Visual Studio используйте Visual Designer для управления обработчиками событий управления. Visual Designer создаст код обработчика и добавит его в событие.

Настройка обработчика

Используйте панель свойств , чтобы добавить или задать обработчик события.

  1. Откройте визуальный конструктор формы, содержащей элемент управления для изменения.

  2. Выберите элемент управления.

  3. Измените режим панели свойств на режим панели событий , нажав кнопку "События" ().

  4. Найдите событие, в которое нужно добавить обработчик, например, событие Click:

    области свойств Visual Studio с включенным режимом событий и событием щелчка.

  5. Выполните одно из следующих действий:

    • Чтобы создать новый обработчик, дважды щелкните событие; если обработчик не назначен, он будет пустым. Если поле не пустое, это действие откроет код формы и перейдет к уже существующему обработчику.

    • Используйте поле выбора () для выбора существующего обработчика.

      В поле выбора будут перечислены все методы, имеющие совместимую сигнатуру метода для обработчика событий.

Очистка обработчика

Чтобы удалить обработчик событий, недостаточно просто удалить код обработчика из файла связанного кода формы; конструктор все равно будет на него ссылаться. Используйте панель свойств , чтобы удалить обработчик события:

  1. Откройте визуальный конструктор формы, содержащей элемент управления для изменения.

  2. Выберите элемент управления.

  3. Измените режим панели свойств на режим панели событий , нажав кнопку "События" ().

  4. Найдите событие, содержащее обработчик, который нужно удалить, например событие Click:

    области свойств Visual Studio с включенным режимом событий и событием щелчка.

  5. Щелкните событие правой кнопкой мыши и выберите Сброс.

Обработка события во время выполнения

Обычно обработчики событий добавляются в элементы управления во время разработки через визуальный конструктор. Однако можно создавать элементы управления во время выполнения, которые требуют добавления обработчиков событий в код. Добавление обработчиков в код также дает возможность добавить несколько обработчиков в одно событие.

Добавить обработчик

В следующем примере показано, как создать элемент управления и добавить обработчик событий. Этот элемент управления создается в обработчике событий 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:

  1. Добавьте новую кнопку в форму и назовите ее Button1.
  2. Измените режим области свойств на события, нажав кнопку события ().
  3. Дважды щелкните событие Click, чтобы создать обработчик. Это действие открывает окно кода и создает пустой метод Button1_Click.
  4. Замените код метода предыдущим кодом выше.

Дополнительные сведения о событиях 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# обработчик присоединяется к событию элемента управления в коде конструктора формы, который изменяется с помощью 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

См. также