VB.NET WinForms调用Form.Show后应用无异常自动关闭问题求助
问题根因
VB.NET WinForms应用默认的关闭模式为当启动窗体关闭时退出应用。你的代码中将FormDataLoad设置为了启动主窗体,当你点击关闭按钮触发FormDataLoad.Close()后,应用检测到启动主窗体已关闭,就会自动启动正常关闭流程,哪怕你后续打开了FormOverview,也会被应用的退出逻辑连带关闭。
解决方案
方案1:修改应用关闭模式(最简单)
- 双击项目中的
My Project打开项目属性页 - 切换到「应用程序」标签页
- 找到「关闭模式」下拉选项,将默认的
当启动窗体关闭时修改为当最后一个窗体关闭时 - 保存修改后重新编译运行即可。
方案2:启动时就指定FormOverview为主窗体,启动阶段先显示加载窗体
这种适合需要严格控制主窗体生命周期的场景,修改Startup事件逻辑如下:
Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup If String.IsNullOrEmpty(My.Settings.TheCompany) Then MainForm = FormConnection FormConnection.Show() Else ' 主窗体指定为FormOverview MainForm = FormOverview ' 先显示加载窗体,阻塞等待加载完成 FormDataLoad.ShowDialog() ' 加载完成后再显示主窗体 FormOverview.Show() End If End Sub
同时移除FormDataLoad的FormClosed事件中调用FormOverview.Show()的代码即可,加载完成后直接调用FormDataLoad.Close()关闭加载弹窗就会回到Startup逻辑继续执行主窗体显示。
内容的提问来源于stack exchange,提问作者user16603211
相关产品推荐
相关产品推荐

