隐藏的 WinForms 模态对话框
Hidden WinForms modal dialogs
我有一个 WinForms 应用程序 (.NET 4),它有一个主窗体和两个模式对话框,如下所示:
- FormMain:运行 通过
Application.Run(new FormMain())
。
- FormSettings:从
FormMain:
new FormSettings().ShowDialog(this)
. 启动
- FormCredentials:从
FormSettings:
new FormCredentials().ShowDialog(this)
启动。
当所有三个表单的边框和大小都正常时,一切正常。但是,此应用程序应该全屏显示,我仅在 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。
我有一个 WinForms 应用程序 (.NET 4),它有一个主窗体和两个模式对话框,如下所示:
- FormMain:运行 通过
Application.Run(new FormMain())
。 - FormSettings:从
FormMain:
new FormSettings().ShowDialog(this)
. 启动
- FormCredentials:从
FormSettings:
new FormCredentials().ShowDialog(this)
启动。
当所有三个表单的边框和大小都正常时,一切正常。但是,此应用程序应该全屏显示,我仅在 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。