【问题标题】:WPF - Bring Window to FrontWPF - 将窗口置于前面
【发布时间】:2011-11-04 21:46:15
【问题描述】:

我有一个没有关闭的 WPF 窗口。相反,我做 Hide() 和 Show() 它。现在,当我在记录上的网格中双击 MainWindow 时,这将触发 Show() 窗口,该窗口将始终显示在 MainWindow 后面。 我已经尝试过休耕,但没有成功:

view.Show();
view.Activate();
view.Topmost = true;
view.Topmost = false;
view.Focus();       

我可以使用另一种方法将窗户绝对放在前面吗?我无法将 MainWindow 设置为所有者。

【问题讨论】:

  • 您将不得不详细说明“我无法将 MainWindow 设置为所有者。”
  • 我不会将 MainWindow 设置为我的视图的所有者,因为 Windows 之间没有关系。我应该可以打开许多这样的窗口。
  • 如果窗口A正在打开窗口B,听起来好像与窗口有关系。窗口A可以是多个窗口的所有者。只是不要以模态方式显示。
  • 为什么你将topmost value从true设置为flase Immediately?

标签: c# .net wpf


【解决方案1】:

Window.Activate 是要走的路(如果您不想设置为所有者)。如果这不起作用(如您所描述的),则另一个位置存在错误。 也许您的 MainWindow 已将 TopMost 设置为 true ?或者您有一个将主窗口或控件集中在其中的延迟调用?

在另一个答案中建议调用 ShowDialog() 不是一个选项,除非您希望整个应用程序被阻止,直到模态打开的窗口关闭。

Win32-Api 中有一个error,如果 WPF,它也会影响窗口管理,但您的问题描述听起来不像这样。

这里还有一个 hack,但我希望你不需要它:

Dispatcher.BeginInvoke(new Action(delegate {       
        view.Activate();
        }), System.Windows.Threading.DispatcherPriority.ContextIdle, null);

【讨论】:

    【解决方案2】:

    ShowDialog 而不是 Show 将允许窗口始终显示在顶部。

    【讨论】:

    • 我不认为这是答案,除非 OP 想要阻止其他窗口,只要打开附加打开的窗口。对我来说,这个问题听起来不像这样。
    • 他想把它带到顶峰,而不是让它成为模特。
    【解决方案3】:

    我遇到了类似的问题,并结合其他答案找到了解决方案。隐藏窗口后,我使用以下代码将其置于前台:

        view.WindowState = WindowState.Normal;
        view.Activate();
    

    注意:如果窗口在隐藏之前已最大化,该代码将使其返回为最大化

    【讨论】:

    • 这对我有用,而直接激活没有。非常感谢您的建议!
    • 即使窗口以最大化方式启动,它也会使用默认高度/宽度
    【解决方案4】:
    myWindow.WindowState = WindowState.Normal;
    

    这对我有用。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题 - 我正在显示一个窗口,其中 Owner 从 MouseDoubleClick 事件中设置为 NULL。我(最终)意识到我需要设置:

      e.Handled = true

      在我的事件代码完成之前。以下 Microsoft 文档概述了您可能希望在事件以“重要且相对完整的方式”响应时将其标记为已处理:

      http://msdn.microsoft.com/en-us/library/ms747183.aspx

      这是主观的,但在我的情况下,它阻止了我刚刚打开的窗口对用户可见。

      【讨论】:

        猜你喜欢
        • 2012-10-08
        • 1970-01-01
        • 2010-09-20
        • 2017-12-02
        • 1970-01-01
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多