Udostępnij za pośrednictwem


Instrukcje: dodawanie programu obsługi zdarzeń przy użyciu kodu

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

Jeśli chcesz dodać obsługę zdarzeń do elementu XAML, a strona kodu XAML zawierająca element została już załadowana, należy dodać obsługę zdarzenia w kodzie. 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 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 Button.

Przykład w języku C# używa operatora += w celu przypisania procedury obsługi do zdarzenia. Jest to ten sam operator, który jest używany do przypisywania procedury obsługi w modelu obsługi zdarzeń wspólnego środowiska uruchomieniowego języka (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:

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

  • Użyj słowa kluczowego Handles w ramach definicji procedury obsługi zdarzeń. Ta technika nie jest pokazana tutaj; zobacz Visual Basic i WPF Event Handling.

<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

Notatka

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.

Zobacz też