1

我希望每次打开表单时都显示为模态。因为我不能改变它的创建和打开方式。我想知道是否有可能使表单在表单类中保持在顶部。

一个机会是TopMost财产。这通常有效,但是如果我在主线程等待它关闭时显示表单,即使我更改应用程序(例如更改为浏览器),表单也会保持在顶部。所以无论我在哪里,表格仍然显示。

我遇到的另一个问题是,在某些情况下,它被父表单采用,然后可能会阻止其他窗口或弹出消息。

一旦失去焦点,我正在考虑一个OnLostFocus事件的钩子以使其再次处于领先地位,但我不确定这是否是一个好主意......

有什么有用的想法吗?


编辑

由于评论,我将扩展我的描述,这是真正的用例

我们正在使用SplashScreenManager能够将某种形式显示为WaitForm. 由于WaitForm不打算显示模式(请参阅支持中心),我们正在寻找一种方法来做到这一点。

我们无法更改表单的显示方式,因为这是通过SplashScreenManager. WaitForm既从主线程显示,也从某些后台工作人员显示。

所以这只是关于我们自己的一种形式,在我们自己的应用程序中显示它。

4

2 回答 2

1

采用:

TopLevel = true;

这将完全符合您的要求;只要显示主窗体就位于最顶层,如果主窗体被另一个窗口隐藏,则隐藏。

您可以在不使用 .Show(owner) 的情况下将启动表单的所有者明确设置为主表单。

splashForm.Owner=mainForm;
splashManager.Show(splashForm);
于 2013-03-28T10:55:45.110 回答
0

我们不想要 TopMost 属性,因为它在窗口级别上工作并且也覆盖其他窗口(例如浏览器)。最后,我连接了窗口的焦点事件,以确保窗口始终位于顶部。

于 2013-06-05T08:43:29.843 回答