【问题标题】:How to determine what form was closed?如何确定关闭了什么表格?
【发布时间】:2014-04-08 16:56:27
【问题描述】:

我确定有一些事件,但我以前从未使用过它,但我只是在寻找某种方法来检查哪个表单被隐藏/关闭,并根据实际关闭的窗口或隐藏。

所以当应用程序启动时,会有按钮,每一个都会打开一个新窗口。一旦在这些窗口上完成处理,它们将被隐藏并且焦点将返回到原始窗口,有没有办法告诉当焦点返回主窗口时隐藏了哪个窗口?

【问题讨论】:

  • 表单关闭/表单关闭事件?这是在每一种形式。正如@Crono 所说,您需要在哪里知道您的表单已关闭?
  • 所以当应用程序启动时,会有按钮,每一个都会打开一个新窗口。一旦在这些窗口上完成处理,它们将被隐藏并且焦点将返回到原始窗口,有没有办法告诉焦点返回主窗口时隐藏了哪个窗口?
  • Form 类总是在关闭后触发其 FormClosed 事件。订阅事件由你决定,没有 Application.FormClosed 事件。
  • 为什么不只使用模态形式?

标签: .net vb.net winforms events


【解决方案1】:

您必须将事件处理程序附加到您创建的每个表单:

AddHandler form.FormClosed, AddressOf SomeMethodThatHandlesFormClosed

此方法需要您有两个参数,一个是Object 类型,一个是FormClosedEventArgs 类型。通常它们分别命名为sendere

Sub SomeMethodThatHandlesFormClosed(sender As Object, e As FormClosedEventArgs )
    ' sender parameter represents the closed form instance.
    Dim form As Form = sender

    ' do what you have to do with the closed form here.
End Sub

编辑:

再次阅读您的问题,我注意到您提到隐藏表单,这与关闭不同。在这种情况下,您可能想要处理 VisibleChanged 事件:

AddHandler form.FormClosed, AddressOf SomeMethodThatHandlesVisibleChanged

' ...

Sub SomeMethodThatHandlesVisibleChanged(sender As Object, e As EventArgs )
    ' sender parameter represents the hidden form instance.
    Dim form As Form = sender

    If Not form.Visible Then
        ' do what you have to do with the hiding form here.
    End If
End Sub

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2014-12-21
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多