【发布时间】:2011-02-16 04:34:01
【问题描述】:
我有这个 Windows 窗体应用程序,它位于通知区域中。单击图标将其置于前面,再次单击它(或单击应用程序 X 图标)将其返回。这种类型的应用程序在通过单击图标显示窗口时始终位于顶部很重要(尽管它是可选的)。
右键单击该图标会弹出一个上下文菜单,您可以在其中选择是否启用“始终位于顶部”选项。当应用程序第一次启动时,应用程序设置是从一个 XML 文件中读取的,我 99% 认为这是正常工作的,TopMost 属性被正确读取(和写入)。
一段时间后(几分钟、几小时、几天等等;我通常会休眠,很少关机)TopMost停止工作。我没有更改选项,我认为没有任何东西会更改选项值,但是我单击通知区域图标并且应用程序没有被提前显示。它出现了,但它在背景上(它显示在 Alt+Tab 上),它不是“总是在最上面”,因为它应该。我打开上下文菜单,禁用该选项(因为它已启用)并重新启用它,然后它开始工作。该应用程序现在“始终处于领先地位”。但是,它可能会在一段时间后随时失去此能力。
我不明白为什么会发生这种情况以及如何发生这种情况。有谁知道为什么?如果没有,知道如何尝试调试这种行为吗?
编辑:
当TopMost 属性被更改时,我添加了一段代码来显示一个MessageBox,看看我是否能注意到任何奇怪的行为,但这并不好。它没有帮助,因为表单是TopMost = true,但它仍然在后台......
【问题讨论】:
标签: c# winforms topmost always-on-top