【问题标题】:How to override the OnFormClosing event and exit the application?如何覆盖 OnFormClosing 事件并退出应用程序?
【发布时间】:2020-03-31 14:07:07
【问题描述】:

在我的 Visual Basic 应用程序中,我已经使用过此代码

Protected Overrides Sub OnFormClosing(ByVal e As FormClosingEventArgs)
    If e.CloseReason = CloseReason.UserClosing Then
        'Me.WindowState = FormWindowState.Minimized
        Me.Hide()
        NotifyIcon1.ShowBalloonTip(450, "Su Enterprise", "The Application is in Background", ToolTipIcon.Info)
        e.Cancel = True
    End If
    MyBase.OnFormClosing(e)
End Sub

它成功地将应用程序放置在系统托盘中,但是当我尝试使用此代码从任务栏关闭它时

Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
    Me.Close()
End Sub

由于之前的 OnFormClosing 事件再次触发,它无法终止或退出应用程序。 请帮我彻底退出应用程序。

【问题讨论】:

    标签: .net vb.net visual-studio


    【解决方案1】:

    如果您使用的是 WPF,Application.Current.Shutdown 会执行此操作,如果您使用的是 WinForms,则可以使用 Environment.Exit(0),它会执行相同的操作,而无需 WPF 执行的清理操作。

    【讨论】:

    • 谢谢。按预期工作......非常感谢
    • 如果它回答了你的问题,你能把它标记为答案吗?
    • @SubhajitMahato,不要使用Environment.Exit(0);它相当于使用 VB 的End Statement。相反,请使用Application.Exit
    • 这很好地解释了这 3 种方法以及何时应该使用它们。而且,是的,@TnTinMn 是正确的,如果您使用的是 WinForms,您应该使用 Application.Exit。有时您可能仍然需要 Environment.Exit(0) 因为某些事情没有停止,但这是最后的手段。 c-sharpcorner.com/forums/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2011-08-24
    • 2018-05-28
    相关资源
    最近更新 更多