【问题标题】: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。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多