C# 隐藏的WinForms模态对话框

C# 隐藏的WinForms模态对话框,c#,.net,winforms,modal-dialog,fullscreen,C#,.net,Winforms,Modal Dialog,Fullscreen,我有一个WinForms app.NET 4,它有一个主窗体和两个模式对话框,如下所示: FormMain:通过应用程序运行。运行新FormMain。 FormSettings:从FormMain启动:新建FormSettings.ShowDialogthis。 FormCredentials:从FormSettings:new FormCredentials.ShowDialogthis启动。 当所有三个窗体都有正常的边框和大小时,一切正常。但是,该应用程序应该全屏显示,我仅在FormMain

我有一个WinForms app.NET 4,它有一个主窗体和两个模式对话框,如下所示:

FormMain:通过应用程序运行。运行新FormMain。 FormSettings:从FormMain启动:新建FormSettings.ShowDialogthis。 FormCredentials:从FormSettings:new FormCredentials.ShowDialogthis启动。 当所有三个窗体都有正常的边框和大小时,一切正常。但是,该应用程序应该全屏显示,我仅在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后面

搜索此行为会带来指定表单所有者的建议,我已经在调用ShowDialogthis时这样做了

它这样做还有其他原因吗


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

请检查此url中的TopMost属性-您不需要设置任何内容,请注释掉此行中设置了TopMost属性,然后检查,正常情况下,它应该可以正常工作

编辑:关于最顶层表单的说明:


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

您的ShowDialogthis是从线程调用的吗?FormCredentials是否设置了TopLevel?@RavindraSinare:ShowDialogthis正在从UI线程调用,TopLevel仅为FormMain设置,而不是为其他两个模式对话框设置。