方法: コードを使用してイベント ハンドラーを追加する
この例では、コードを使用して、イベント ハンドラーを要素に追加する方法を示します。
イベント ハンドラーを XAML 要素に追加し、その要素を含むマークアップ ページが既に読み込まれている場合は、コードを使用してハンドラーを追加する必要があります。 または、コードを使用してアプリケーションの要素ツリーを全体的に構築し、XAML を使用して要素を宣言しない場合は、特定のメソッドを呼び出して、構築された要素ツリーにイベント ハンドラーを追加できます。
例
次の例では、最初に XAML で定義された既存のページに新しい Button を追加します。 分離コード ファイルでは、イベント ハンドラー メソッドが実装され、そのメソッドは Button の新しいイベント ハンドラーとして追加されます。
C# の例では、+=
演算子を使用して、ハンドラーをイベントに割り当てています。 これは、共通言語ランタイム (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 {
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
注意
最初に解析された XAML ページでイベント ハンドラーを追加する方がはるかに簡単です。 イベント ハンドラーを追加するオブジェクト要素内で、処理するイベントの名前と一致する属性を追加します。 次に、XAML ページの分離コードファイルで定義したイベント ハンドラー メソッドの名前として、その属性の値を指定します。 詳細については、「WPF の XAML」または「ルーティング イベントの概要」を参照してください。
関連項目
.NET Desktop feedback