TopMost总是不是TopMost - WPF

Pri*_*aka 3 c# wpf topmost

我有一个时钟应用程序.我已经设置了Window的TopMost属性.但是,随机地,一些其他窗口或视觉工作室来到时钟之上.

有没有其他方法可以使我的窗口(时钟应用程序)始终显示在所有其他应用程序之上.

She*_*dan 18

我知道这个问题已经过时了,但我不太明白为什么接受的答案已经获得了投票......或者为什么它被接受了......它并没有真正回答这个问题,或者提供了解决方案和答案这些天,是短几乎都是下降投票和/或由社区删除.好吧,我猜它是在不同的时间发布的.

无论哪种方式,尽管它已经老了,我可以为将来可能会遇到这篇文章的人提供一个可能的解决方案.您只需处理Window.Deactivated事件和/或Application.Deactivated事件即可.的Window.Deactivated事件 时一个窗口成为背景窗口发生Application.Deactivated事件 时应用程序不再是前台应用程序发生.

我们的想法是在每次申请或失去焦点时设置相关TopMost属性:trueWindow

private void Window_Deactivated(object sender, EventArgs e)
{
    // The Window was deactivated 
    this.TopMost = true;
}
Run Code Online (Sandbox Code Playgroud)

值得注意的是,其他开发人员也可以使用这种技术,所以这并不能保证你的Window意志永远保持在最高位置,但它对我有用,并且通过使用它仍然可以改善这种情况.

  • 这对我不起作用。要使其正常工作,关键是先设置 `Topmost = false`,然后再次设置 `Tompost = true` (4认同)

cas*_*nca -2

你确定这是一个随机窗口吗?如果另一个窗口也是最顶层窗口,则它有可能位于您的窗口之上。

  • 没有 SuperDuperTopMost 选项。显然,“每个人”都会使用它,这就失去了拥有它的理由。 (11认同)
  • @汉斯谢谢。但是,像 SlickRun 和其他桌面时钟这样的应用程序可能是如何在所有可能的窗口的最上面显示自己的呢?除了“Window”之外还有什么可以给我带来这种效果吗? (2认同)