方法 : コードを使用してイベント ハンドラーを追加する
コードを使用して要素にイベント ハンドラーを追加する方法を次の例に示します。
イベント ハンドラーを 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)」または「ルーティング イベントの概要」を参照してください。 |