【问题标题】:close form when application loses focus当应用程序失去焦点时关闭表单
【发布时间】:2013-07-19 23:31:15
【问题描述】:

我的表单在我的应用程序中显示为 TopMost。我遇到的问题是,每当我最小化我的应用程序或它失去焦点时,表单仍然显示。我希望能够最小化我的应用程序或移动到另一个应用程序并隐藏或关闭我的表单。应用程序重新获得焦点后,再次取消隐藏或打开表单。

这是我在表单的结束事件中得出的结论:

Private Sub frmNavigation_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    Static Minimize As Boolean

    If Minimize = True Then
        e.Cancel = True
        Me.Hide()
    End If
End Sub

我尝试在应用程序WindowDeactivate 事件中使用相同的代码,但没有任何反应。

【问题讨论】:

  • 在您的代码中,Minimize 将具有默认的 False 值,并且永远不会设置为 True,因此不会发生任何事情。也许您有更多没有为此显示的代码?但是,我对你的描述感到困惑,并认为你可以把它说得更清楚。
  • TopMost 的主要思想正是在于,无论专注于什么,都要掌握一切。这是您真正想要的吗?或者您可以在没有 TopMost 的情况下尝试吗?
  • 很抱歉给您带来了困惑。我想要完成的是,如果我的应用程序失去焦点,那么也要最小化我的表单。我上面的代码并没有真正起作用,所以我不得不忽略它。

标签: vb.net


【解决方案1】:

您没有展示如何创建frmNavigation 的实例。我假设您使用的是 Show 方法,因此只需使用您在顶级窗口中传递的 Show 版本。这将分配表单的所有者,然后它将停留在您的主表单之上并最小化和恢复它。如果这不起作用,请说明您是如何创建和显示表单的。

frmNavigation.Show(Me)

【讨论】:

    【解决方案2】:

    我能够找到问题的答案。 MSDN 有一篇关于这个问题的文章。

    可以在这里找到:http://support.microsoft.com/kb/186908#appliesto

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 2020-10-02
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多