WPF 添加处理程序到 System.Windows.Controls.Label
WPF AddHandler to System.Windows.Controls.Label
我正在尝试向我动态创建的标签 (System.Windows.Controls.Label) 的 MouseLeftButtonUp
添加处理程序,但我收到一条错误消息
Argument not specified for parameter 'e' of 'Private Sub btnLink_Clicked(sender As Object, e As MouseButtonEventArgs)
Private Sub CreateClickableLabel()
Dim btnLink As New System.Windows.Controls.Label()
btnLink.Content = "Click Me"
AddHandler btnLink.MouseLeftButtonUp, btnLink_Clicked
Windows.Controls.Grid.SetColumn(btnLink, 0)
Windows.Controls.Grid.SetRow(btnLink, 0)
gridData.Children.Add(btnLink)
End Sub
Private Sub btnLink_Clicked(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
MessageBox.Show("You clicked me")
End Sub
如何以编程方式将此事件处理程序添加到我的标签中?一旦我将有更多标签由同一功能处理?
您缺少 AddressOf
operator:
AddHandler btnLink.MouseLeftButtonUp, AddressOf btnLink_Clicked
在 VB.NET 中,每次引用没有 calling/executing 的方法(子函数或函数)时,您都必须使用 AddressOf
。例如,如果你想将它作为参数传递给另一个 method/statement/operator,或者你想将它存储在一个变量中并在你的代码中使用它。
这是必需的,因为 AddressOf
创建了一个 Delegate
您的方法。 Delegate
基本上是围绕方法指针的面向对象的包装器,这意味着您现在可以像对待 .NET 中的任何其他对象一样对待它。
我正在尝试向我动态创建的标签 (System.Windows.Controls.Label) 的 MouseLeftButtonUp
添加处理程序,但我收到一条错误消息
Argument not specified for parameter 'e' of 'Private Sub btnLink_Clicked(sender As Object, e As MouseButtonEventArgs)
Private Sub CreateClickableLabel()
Dim btnLink As New System.Windows.Controls.Label()
btnLink.Content = "Click Me"
AddHandler btnLink.MouseLeftButtonUp, btnLink_Clicked
Windows.Controls.Grid.SetColumn(btnLink, 0)
Windows.Controls.Grid.SetRow(btnLink, 0)
gridData.Children.Add(btnLink)
End Sub
Private Sub btnLink_Clicked(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
MessageBox.Show("You clicked me")
End Sub
如何以编程方式将此事件处理程序添加到我的标签中?一旦我将有更多标签由同一功能处理?
您缺少 AddressOf
operator:
AddHandler btnLink.MouseLeftButtonUp, AddressOf btnLink_Clicked
在 VB.NET 中,每次引用没有 calling/executing 的方法(子函数或函数)时,您都必须使用 AddressOf
。例如,如果你想将它作为参数传递给另一个 method/statement/operator,或者你想将它存储在一个变量中并在你的代码中使用它。
这是必需的,因为 AddressOf
创建了一个 Delegate
您的方法。 Delegate
基本上是围绕方法指针的面向对象的包装器,这意味着您现在可以像对待 .NET 中的任何其他对象一样对待它。