【问题标题】:VB.Net how to wait for a different form to close before continuing onVB.Net如何在继续之前等待不同的表单关闭
【发布时间】:2011-01-09 04:27:37
【问题描述】:
如果用户在我的主表单上选择某个项目,我会弹出一个小登录屏幕。如何让我的代码停止执行,直到我的登录表单关闭?
这就是我目前正在做的事情。基本上我想在 MyLogin 关闭后执行代码。
BMSSplash.MyLogin.Show()
If isLoggedIn Then
BMSSplash.MyBuddy.Show()
Cursor.Current = Cursors.WaitCursor
End If
【问题讨论】:
标签:
.net
vb.net
forms
winforms
【解决方案1】:
一个简单而合理的选择是用ShowDialog而不是Show模态显示表单。这将阻止您的应用程序的其余部分,直到表单关闭:
If BMSSplash.MyLogin.ShowDialog() = DialogResult.OK Then
' Form was closed via OK button or similar, continue normally... '
BMSSplash.MyBuddy.Show()
Else
' Form was aborted via Cancel, Close, or some other way; do something '
' else like quitting the application... '
End If
【解决方案2】:
改用BMSSplash.MyLogin.ShowDialog() 将窗口显示为所谓的modal对话框。
【解决方案3】:
要阻止其他代码执行,您需要将其他窗口显示为模式对话框。这通常是通过 WinForms type by calling the ShowDialog overload which accepts anIWin32Window` 重载并传递当前正在执行的表单来完成的。通常是我。
BMSSplash.MyBuddy.ShowDialog(Me)
不过,我在启动画面实现方面没有太多经验,它的 API 可能略有不同。
【解决方案4】:
附言如果您想使用“启动”屏幕执行 .showDialog,您可以在该表单上添加一个计时器,并在计时器触发时将其设置为 me.dispose。