如何在我的应用程序中保持窗口在所有其他窗口之上?

时间:2009-09-08 10:42:20

标签: c# window topmost

我想在我的C#Windows窗体应用程序中显示一个状态窗口,该窗口会在应用程序等待获取锁定时通知用户。这是一个应用程序定义的东西,但是,窗口应该是可见的并且始终保持在我的应用程序的所有其他窗口之上,即使用户点击另一个窗口(例如它后面的较大的主窗口)。

它不能是模态的(因此不能使用ShowDialog())因为应用程序需要在后台继续尝试并且如果最终可以获取锁定则自动关闭窗口,并且它实际上不应该是最顶层的整个窗口站(即在该终端会话中运行的所有应用程序)。

我知道Form.TopMost属性,但它只能将一个窗口带到所有其他窗口,甚至是其他应用程序的窗口。这显然不是我想要的。

我知道这是可能的,我之前在其他应用程序中已经多次看到它。我只是不知道怎么做。

2 个答案:

答案 0 :(得分:9)

如果您将主表单传递给状态表单的Show方法,它将保留在主表单的顶部,但不会保留在其他应用程序之上。因此,在主窗体中,您可以使用如下代码:

StatusForm statusForm = new StatusForm();
statusForm.Show(this);

但是,这只会指出您的应用程序的一个窗口作为所有者。

答案 1 :(得分:4)

您必须将子表单的Owner属性设置为父表单,并使用Show显示子表单。