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,我被指出了正确的方向。解决方案是:
- 隐藏而不关闭启动画面(将 Visible 设置为 false)
- 使用 system-provided 消息框 class
- 在 MessageBoxOptions 中设置“ServiceNotification”选项。
这非常有效。
谢谢!
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,我被指出了正确的方向。解决方案是:
- 隐藏而不关闭启动画面(将 Visible 设置为 false)
- 使用 system-provided 消息框 class
- 在 MessageBoxOptions 中设置“ServiceNotification”选项。
这非常有效。
谢谢!