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


Обработка события элемента управления (Windows Forms .NET)

События элементов управления (и для форм) обычно задаются с помощью 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 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

См. также