方法 : コードを使用してイベント ハンドラーを追加する

コードを使用して要素にイベント ハンドラーを追加する方法を次の例に示します。

イベント ハンドラーを XAML 要素に追加する際に、その要素を含むマークアップ ページが既に読み込まれている場合は、コードを使用してハンドラーを追加する必要があります。 また、コードのみを使用してアプリケーションの要素ツリーを構築し、XAML を使用して要素の宣言をしない場合は、特定のメソッドを呼び出して、構築された要素ツリーにイベント ハンドラーを追加することができます。

使用例

最初に定義した既存のページに、新しい Button を追加する XAML での例を次に示します。 分離コード ファイルはイベント ハンドラー メソッドを実装し、そのメソッドを新しいイベント ハンドラーとして Button に追加します。

C# の例では、+= 演算子を使用してイベントにハンドラーを割り当てます。 これは、common language runtime (CLR) のイベント処理モデルでハンドラーを割り当てる際に使用する演算子と同じです。 Microsoft Visual Basic では、イベント ハンドラーを追加する手段としてこの演算子はサポートされていません。 代わりに、次の 2 つの手法のいずれかを使用する必要があります。

  • 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!!";
    }
メモメモ

最初に解析した XAML ページでイベント ハンドラーを追加すると、非常に簡単です。イベント ハンドラーを追加するオブジェクト要素内で、処理するイベント名と一致する属性を追加します。次に、XAML ページの分離コード ファイルで定義したイベント ハンドラー メソッドの名前として、その属性の値を指定します。詳細については、「XAML の概要 (WPF)」または「ルーティング イベントの概要」を参照してください。

参照

概念

ルーティング イベントの概要

その他の技術情報

イベントに関する「方法」トピック