我正在研究一个项目,我遇到了一些问题,我似乎无法解决自己。我尽可能地简化了代码,并开始了一个新的小项目,看看这是否是由于对其他大项目的干扰造成的。
这就是我所拥有的:
XAML:
<Window Loaded="Window_Loaded" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="MainWindow">
<Label MouseDown="Label1_MouseDown" Content="y u no work?!" Name="Label1"/>
</Window>
CODE:
Class MainWindow
Private Sub Label1_MouseDown(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs)
MsgBox("md1")
End Sub
Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs)
' Doesn't work
Label1.AddHandler(Mouse.MouseDownEvent, Sub() MsgBox("md2"))
' Doesn't work neither
Mouse.AddMouseDownHandler(Label1, Sub() MsgBox("md3"))
End Sub
End Class
正如预期的那样,“md1”弹出。 “md2”和“md3”没有。你认为我犯了什么错误?
答案 0 :(得分:3)
以下行错误并抛出静默的“处理程序类型不匹配”异常。
Label1.AddHandler(Mouse.MouseDownEvent, Sub() MsgBox("md2"))
结果,实际上非常好的下一行不会运行。
所以以下工作正常。
Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
Mouse.AddMouseDownHandler(Label1, Sub() MsgBox("md2"))
Mouse.AddMouseDownHandler(Label1, Sub() MsgBox("md3"))
End Sub
我个人会使用以下内容添加处理程序,但我不确定除了我认为提高可读性之外是否有任何优势或差异。
AddHandler Label1.MouseDown, Sub() MsgBox("md4")
我希望这很有帮助,
萨姆。