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

Handling the sender object in closing event

我对 VB .Net 中的发件人对象有点困惑。如果我有以下事件:

Private Sub wpfWindow_Closing(sender As Object, e As  
            ComponentModel.CancelEventArgs) Handles wpfWindow.Closing

End Sub

然后我明白发件人是在 window 关闭之前调用关闭事件的东西。但是,我正在努力了解如何确定按下了哪个按钮。如果我在事件中执行以下操作:

    Dim aButton As Button = CType(sender, Button)

    If aButton.Content = "Next" Then
        MessageBox.Show("You pressed Next")
    End If

即使我按下 "Next",它也无法投射发件人,这会引发错误。

也试过:

If sender Is btnNext Then
    MessageBox.Show("You pressed Next")
End If

但在这种情况下,它只是跳过它。

归根结底,我只是想浏览一些 WPF windows。有一个起始 window ,一旦我移动到下一个,我就会隐藏它。问题是在第二个 window 上,我想确定是否按下 "Next" 而不是 "Cancel" 或右上角的关闭按钮。如果按下下一步,那么我想关闭 window 并打开另一个。如果按下其他按钮,那么我想关闭 window 并打开起始 window.

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

因此您可以将发件人转换为 Window,但不能转换为 Button

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