如何:使用程式碼加入事件處理常式
本範例會顯示如何使用程式碼將事件處理常式加入事件。
如果您想要將事件處理常式新增至 XAML 元素,而且已載入包含元素的標記頁面,您必須使用程式碼新增處理常式。 或者,如果您想使用程式碼為應用程式建立元素樹狀結構,而非以 XAML 宣告任何元素,您可以呼叫特定方法,將事件處理常式新增至建立的元素樹狀結構。
範例
下列範例會將新的 Button 新增至 XAML 中最初定義的現有頁面。 程式碼後置檔案會實作事件處理常式方法,並將該方法新增為 Button上的新事件處理常式。
C# 範例會使用 +=
運算子,將處理常式指派給事件。 這也是用來在通用語言執行平台 (CLR) 事件處理模型中指派處理常式的運算子。 Microsoft Visual Basic 不支援此運算子作為新增事件處理常式的方法。 它需要從兩種技術中擇一進行:
使用 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 或路由事件概觀。