Jak dodać obsługę zdarzeń z użyciem kodu

W tym przykładzie pokazano, jak dodać procedurę obsługi zdarzeń do elementu przy użyciu kodu.

Jeśli chcesz dodać program obsługi zdarzeń do elementu XAML, a strona znaczników zawierająca element został już załadowany, należy dodać procedurę obsługi przy użyciu kodu. Alternatywnie, jeśli tworzysz drzewo elementów dla aplikacji w całości przy użyciu kodu i nie deklarujesz żadnych elementów przy użyciu języka XAML, możesz wywołać określone metody, aby dodać programy obsługi zdarzeń do skonstruowanego drzewa elementów.

Przykład

Poniższy przykład dodaje nowy Button element do istniejącej strony, która jest początkowo zdefiniowana w języku XAML. Plik związany z kodem implementuje metodę obsługi zdarzeń, a następnie dodaje tę metodę jako nową procedurę obsługi zdarzeń w pliku Button.

Przykład w += języku C# używa operatora do przypisania procedury obsługi do zdarzenia. Jest to ten sam operator, który jest używany do przypisywania programu obsługi w modelu obsługi zdarzeń środowiska uruchomieniowego języka wspólnego (CLR). Program Microsoft Visual Basic nie obsługuje tego operatora jako środka dodawania procedur obsługi zdarzeń. Zamiast tego wymaga jednej z dwóch technik:

  • AddHandler Użyj metody wraz z operatoremAddressOf, aby odwołać się do implementacji programu obsługi zdarzeń.

  • Handles Użyj słowa kluczowego w ramach definicji procedury obsługi zdarzeń. Ta technika nie jest pokazana tutaj; zobacz Visual Basic i WPF Event Handling (Obsługa zdarzeń w języku Visual Basic i 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 {
    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!!";
    }
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

Uwaga

Dodanie programu obsługi zdarzeń na stronie analizy początkowej XAML jest znacznie prostsze. W elemecie obiektu, w którym chcesz dodać procedurę obsługi zdarzeń, dodaj atrybut zgodny z nazwą zdarzenia, które ma być obsługiwane. Następnie określ wartość tego atrybutu jako nazwę metody obsługi zdarzeń zdefiniowanej w pliku kodu strony XAML. Aby uzyskać więcej informacji, zobacz XAML w WPF lub Routed Events Overview (Omówienie zdarzeń trasowanych).

Zobacz też