隐藏的 WinForms 模态对话框

Hidden WinForms modal dialogs

我有一个 WinForms 应用程序 (.NET 4),它有一个主窗体和两个模式对话框,如下所示:

当所有三个表单的边框和大小都正常时,一切正常。但是,此应用程序应该全屏显示,我仅在 FormMain 上使用以下代码来实现:

        FormMain.FormBorderStyle = FormBorderStyle.FixedSingle;
        FormMain.MinimizeBox = false;
        FormMain.MaximizeBox = false;

        FormMain.Text = "";
        FormMain.ControlBox = false;
        FormMain.ShowInTaskbar = false;
        FormMain.TopMost = !Configuration.Debug;
        FormMain.TopLevel = true;

其他两个对话框有它们的 FormBorderStyle = FormBorderStyle.FixedSingle

所以 FormMain 启动 FormSettings 作为模式对话框,FormSettings 启动 FormCredentials 作为模式对话框。 FormCredentials 总是在 FormMain 后面消失。事实上,任何三级形式都消失在 FormMain.

之后

搜索此行为会提出指定表单所有者的建议,我在调用 ShowDialog(this).

时已经这样做了

它有这种行为的任何其他原因吗?

编辑: 这只发生在发布模式下,所以 FormMain.TopMost = !Configuration.Debug 行可能与它有关。该行确保最终用户在 运行 作为信息亭时无法退出应用程序。

请为 TopMost 属性 检查这个 url - 你不需要设置任何东西,注释掉这行确实设置了 topmost 属性,然后检查,通常它应该工作正常.

https://msdn.microsoft.com/en-us/library/system.windows.forms.form.topmost(v=vs.110).aspx

编辑:关于 TopMost 表单的说明:

最顶层窗体是与所有其他(非最顶层)窗体重叠的窗体,即使它不是活动窗体或前台窗体。最上面的表单始终显示在桌面上 windows 的 z 顺序中的最高点。您可以使用此 属性 创建一个始终显示在您的应用程序中的表单,例如查找和替换工具 window。