我对VB .Net中的发件人对象感到有些困惑。如果我有以下事件:
Private Sub wpfWindow_Closing(sender As Object, e As
ComponentModel.CancelEventArgs) Handles wpfWindow.Closing
End Sub
然后我明白发件人是在窗口关闭之前调用结束事件的东西。但是,我很难看到如何确定按下了哪个按钮。如果我在事件中执行以下操作:
Dim aButton As Button = CType(sender, Button)
If aButton.Content = "Next" Then
MessageBox.Show("You pressed Next")
End If
这会导致错误,因为它无法投射发件人,即使我按下"下一步"。
还尝试过:
If sender Is btnNext Then
MessageBox.Show("You pressed Next")
End If
但在这种情况下,它只是跳过它。
在一天结束时,我只想尝试浏览一些WPF窗口。一旦我移动到下一个窗口,我就会隐藏起始窗口。问题是在第二个窗口我想确定是否"下一个"按下而不是"取消"或右上角的关闭按钮。如果按下了下一个,那么我想关闭窗口并打开另一个窗口。如果按下其他按钮,则我想关闭窗口并打开起始窗口。
答案 0 :(得分:0)
sender
将是Window
,因为Closing
是Windows
的事件。
因此,您可以将发件人转发给Window
,但不能投放到Button
。
如果您的“下一步”和“取消”按钮有单独的Click
事件处理程序,则应该很难确定单击了哪个Button
。在Click
事件处理程序中,您可以执行最初想要的操作,将sender
转换为Button
类型。