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

时间:2009-10-26 21:15:11

标签: c# winforms parent-child topmost

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

3 个答案:

答案 0 :(得分:3)

您可以尝试在子表单可见的持续时间内清除父表单的TopMost属性。

这将解决哪种形式应该是最重要的问题,因为只有一种形式。

答案 1 :(得分:2)

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

form2.TopMost = true;

以主要形式使用此代码:

form2.Owner = this;

如果使用Form.TopMost属性,表单将与所有其他非最顶层表单重叠,但也会与其他应用程序重叠。而不是这样,将Form.Owner属性设置为父窗体 - 应该在窗体下的窗体(例如主窗体)。 幸运的是:)

答案 2 :(得分:0)

嗯。我创建了To表单。然后我在两者上设置TopMost = true。我首先添加按钮并写入 new Form2().ShowDialog();

一切都很好。 Form2处于活动状态且可单击。 Form1不是因为ShowDialog被称为

第二种变体很好用。 Form2在屏幕中央打开。

可能是我误解了什么?