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


Практическое руководство. Добавление обработчика событий с помощью кода

Обновлен: Ноябрь 2007

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

Если вам необходимо добавить обработчик событий к элементу XAML, а разметка страницы, которая содержит элемент, уже загружена, вам необходимо добавлять обработчик с помощью кода. Кроме того, если вы строите дерево элементов для приложения, используя только код, и не объявляете никаких элементов, используя XAML, вы можете вызвать специальные методы для добавления обработчиков событий в построенное дерево элементов.

Пример

В следующем примере добавляется новый Button на существующую страницу, которая первоначально определяется в XAML. Файл кода программной части реализует метод обработчика событий и добавляет этот метод в качестве нового обработчика событий в Button.

В примере C# используется оператор += для присвоения обработчика событию. Это тот же оператор, который используется для назначения обработчика в модели обработки событий среда CLR (common language runtime). Microsoft Visual Basic не поддерживает этот оператор в качестве средства для добавления обработчиков событий. Вместо этого требуется один из двух методов:

  • Использовать метод AddHandler, вместе с оператором AddressOf, для ссылки на реализацию обработчика событий.

  • Использовать ключевое слово Handles в качестве части определения обработчика событий. Этот метод не показан здесь; см. Обработка событий в Visual Basic и WPF.

<TextBlock Name="text1">Start by clicking the button below</TextBlock>
<Button Name="b1" Click="MakeButton">Make new button and add handler to it</Button>
Public Partial Class RoutedEventAddRemoveHandler
    Private Sub MakeButton(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Dim b2 As Button = New Button()
        b2.Content = "New Button"
        AddHandler b2.Click, AddressOf Onb2Click
        root.Children.Insert(root.Children.Count, b2)
        DockPanel.SetDock(b2, Dock.Top)
        text1.Text = "Now click the second button..."
        b1.IsEnabled = False
    End Sub
    Private Sub Onb2Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
        text1.Text = "New Button (b2) Was Clicked!!"
    End Sub
public partial class RoutedEventAddRemoveHandler {
    void MakeButton(object sender, RoutedEventArgs e)
    {
        Button b2 = new Button();
        b2.Content = "New Button";
        // Associate event handler to the button. You can remove the event 
        // handler using "-=" syntax rather than "+=".
        b2.Click  += new RoutedEventHandler(Onb2Click);
        root.Children.Insert(root.Children.Count, b2);
        DockPanel.SetDock(b2, Dock.Top);
        text1.Text = "Now click the second button...";
        b1.IsEnabled = false;
    }
    void Onb2Click(object sender, RoutedEventArgs e)
    {
        text1.Text = "New Button (b2) Was Clicked!!";
    }
ms743596.alert_note(ru-ru,VS.90).gifПримечание.

Добавление обработчика событий в изначально разобранную страницу XAML намного проще. В элемент объекта, в который требуется добавить обработчик событий, добавьте атрибут, который совпадает с именем события, которое вам требуется обработать. Затем укажите значение этого атрибута в качестве имени метода обработчика событий, который вы определили в файле кода программной части страницы XAML. Дополнительные сведения см. в разделе Общие сведения о XAML или Общие сведения о перенаправленных событиях.

Полный пример см. в разделе Пример добавления обработчика событий.

См. также

Задачи

Пример добавления обработчика событий

Основные понятия

Общие сведения о перенаправленных событиях

Другие ресурсы

Разделы руководства, посвященные событиям

Примеры использования событий