我有一个WinForms应用程序(.NET 4),它有一个主窗体和两个模态对话框,如下所示:
Application.Run(new FormMain())
运行。FormMain:
new FormSettings().ShowDialog(this)
启动。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
可能与其有关。该行确保最终用户在作为自助服务终端运行时无法退出应用程序。
答案 0 :(得分:0)
请检查此网址的TopMost属性 - 您不需要设置任何内容,注释掉这行设置最顶层属性,并检查,通常它应该工作正常。
https://msdn.microsoft.com/en-us/library/system.windows.forms.form.topmost(v=vs.110).aspx
编辑:有关TopMost表单的说明:
最上面的表单是一种与所有其他(非最顶层)表单重叠的表单,即使它不是活动表单或前景表单。最顶层的表单始终显示在桌面上窗口的z顺序的最高点。您可以使用此属性创建始终显示在应用程序中的表单,例如“查找和替换”工具窗口。