隐藏的WinForms模式对话框

时间:2015-09-01 05:49:11

标签: c# .net winforms modal-dialog fullscreen

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

  • FormMain:通过Application.Run(new FormMain())运行。
  • 表单设置:从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可能与其有关。该行确保最终用户在作为自助服务终端运行时无法退出应用程序。

1 个答案:

答案 0 :(得分:0)

请检查此网址的TopMost属性 - 您不需要设置任何内容,注释掉这行设置最顶层属性,并检查,通常它应该工作正常。

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

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

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