在关闭事件中处理发送方对象

时间:2016-02-28 10:18:26

标签: wpf vb.net vb.net-2010

我对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窗口。一旦我移动到下一个窗口,我就会隐藏起始窗口。问题是在第二个窗口我想确定是否"下一个"按下而不是"取消"或右上角的关闭按钮。如果按下了下一个,那么我想关闭窗口并打开另一个窗口。如果按下其他按钮,则我想关闭窗口并打开起始窗口。

1 个答案:

答案 0 :(得分:0)

sender将是Window,因为ClosingWindows的事件。

因此,您可以将发件人转发给Window,但不能投放到Button

如果您的“下一步”和“取消”按钮有单独的Click事件处理程序,则应该很难确定单击了哪个Button。在Click事件处理程序中,您可以执行最初想要的操作,将sender转换为Button类型。