Winforms:在应用程序主窗体的 Load 方法中显示对话框始终显示在底部

Winforms: Showing a dialog in the Load method of app's main form always shows to bottom

Winforms .NET Framework 4.7.2

嗨 - 我有一个程序,在主窗体的加载方法中我检查了我们云服务器上的一些东西,甚至在此之前我检查是否有互联网。在某些情况下,我关闭启动画面 window,然后放置一个 messagebox.show,然后替换为一个 class,它模拟具有额外功能的 MessageBox。

此逻辑在 Load 方法中,不能在显示方法中,因为从云中检索的信息决定了加载到主窗体控件中的内容。

使用 Messagebox.Show 或模拟的消息框 class,显示对话框始终位于底部,甚至在屏幕上的其他应用 运行 之后。在模拟器 Class 中使用 TopLevel = true;' 显示的事件处理程序无效。由于这是主窗体的加载方法,因此没有句柄作为所有者传递给 ShowDialog 方法。

有什么方法可以让这个达到顶峰吗?

从 Load 方法调用的代码:

            HandleCloseSplash()
            PTCommonControls.PTMessageBox.Show("Your PC is not connected to the Internet." & vbCrLf & "AutoUpdate™, MyActivate™ and other online features are disabled." & vbCrLf & "Please connect to the internet when using this program.",
                                                      "No Internet",
                                                      MessageBoxButtons.OK,
                                                      MessageBoxIcon.Information)

来自 PTMessageBox 的 Shown 事件处理程序 class:

                    flexibleMessageBoxForm.Shown += (sender, e) =>
                    {
                        flexibleMessageBoxForm.TopLevel = true;
                        if (flexibleMessageBoxForm.Parent == null) { flexibleMessageBoxForm.ShowInTaskbar = true; }
                    };

感谢您的帮助。

已解决。感谢@Hans Passant,我被指出了正确的方向。解决方案是:

  1. 隐藏而不关闭启动画面(将 Visible 设置为 false)
  2. 使用 system-provided 消息框 class
  3. 在 MessageBoxOptions 中设置“ServiceNotification”选项。

这非常有效。

谢谢!