C# - 如何处理 2 个“TopMost”表单?

use*_*ser 5 c# parent-child topmost winforms

我有一个设置为 TopMost 的父窗体,然后我有另一个在单击按钮时打开的窗体。此子窗体也设置为 TopMost。我遇到的第一个问题是,当我打开子窗体时,应用程序基本上会冻结,因为您无法访问任何内容。我决定不使用 ShowDialog() 打开子窗体,而是使用 Show(this)。这确实解决了最初的问题,但现在我有了一个新问题。childforms 开始位置设置为 CenterParent,当我使用 Show(this) 时,它不起作用。有什么方法可以让子窗体打开,同时将子窗体和父窗体都设置为最顶层,同时将子窗体的起始位置设置为 CenterParent?谢谢你。

Sha*_*yar 5

我找到了一些有用的东西与你们分享,伙计们。而是遵循代码

form2.TopMost = true;
Run Code Online (Sandbox Code Playgroud)

以主要形式使用此代码:

form2.Owner = this;
Run Code Online (Sandbox Code Playgroud)

如果您使用 Form.TopMost 属性,则该表单将与所有其他非最顶层表单以及来自其他应用程序的表单重叠。取而代之的是,将 Form.Owner 属性设置为父窗体——应该在窗体下的那个(例如主窗体)。G00d 运气:)


Chr*_*isF 3

您可以尝试在子窗体可见期间清除父窗体的 TopMost 属性。

这将解决哪种形式应该位于最顶层的问题,因为永远只有一种形式。