Visual Studio 2022 VB.NET中免责声明窗体无法正常停留问题求助
VB.NET WinForm闪屏后免责声明窗体无法停留的解决方法
问题根源
你的闪屏窗体是程序的启动窗体,当执行Me.Close()时,应用程序的主线程会随启动窗体的关闭而终止,导致后续弹出的免责声明窗体被强制关闭,无法正常停留。
解决方案一:调整代码执行顺序
修改闪屏窗体中Timer的Tick事件代码,先显示免责声明对话框,待用户操作完成后再关闭闪屏窗体:
Private Sub timerSplash_Tick(sender As Object, e As EventArgs) Handles timerSplash.Tick timerSplash.Stop() Dim disclaimerForm As New Disclaimer() ' 显示免责声明,直到用户手动关闭 disclaimerForm.ShowDialog() ' 关闭闪屏窗体,触发程序终止 Me.Close() End Sub
解决方案二:切换启动窗体
将免责声明窗体设为启动窗体,在其加载时先显示闪屏:
- 在项目属性中,设置
Disclaimer为启动窗体 - 在Disclaimer窗体的Load事件中添加代码:
Private Sub Disclaimer_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Hide() Dim splashForm As New Splash() splashForm.Show() ' 等待3秒后关闭闪屏 System.Threading.Thread.Sleep(3000) splashForm.Close() Me.Show() End Sub
原理说明
Windows Forms应用程序的生命周期由启动窗体控制,当启动窗体关闭时,Application.Run()方法结束,所有关联的窗体都会被关闭。原代码中先关闭启动窗体(闪屏),再弹出免责声明,此时应用程序已进入终止流程,因此免责声明无法正常显示。
内容的提问来源于stack exchange,提问作者Athang Tikekar
相关产品推荐
相关产品推荐

