【问题标题】:Make all wpf project windows topmost programmatically以编程方式使所有 wpf 项目窗口位于最顶层
【发布时间】:2015-07-11 15:37:18
【问题描述】:

可以在 Visual Studio 设计器中或使用代码将单个窗口置于最顶层,但是有没有办法用代码一次将每个窗口置于最顶层?

我遇到的问题是,仅将主父窗口设为最顶层会隐藏任何其他窗口,所以显然我需要将它们全部设为最顶层,还是我错了?

【问题讨论】:

    标签: c# wpf topmost


    【解决方案1】:

    在 MainWindow 上设置 TopMost 属性。

    然后在创建任何其他子窗口/对话框时,将 MainWindow 属性传递给显示对话框方法。这会将子窗口设置为模式对话框。这意味着它将始终出现在主窗口上方。

    public void ShowModelDialog()
    {
      MyDialog d = new MyDialog();
    
      d.ShowDialog(this);
    }
    

    See here for more info

    【讨论】:

    • 好的,谢谢,我会试试这个,如果它适合我​​的情况,我会回复你。
    • OK 您指定的代码不起作用,但理论是正确的。创建实例时,我必须指定窗口的所有者。然后ShowDialog()。还是谢谢!
    【解决方案2】:

    首先必须在创建实例时指定窗口的所有者。

    以下示例显示了新窗口如何在显示之前先设置所有者。 MyWindow _MyWindow = new MyWindow() { Owner = Application.Current.MainWindow };

    注意:被设置为所有者的窗口必须已经显示,否则您可能会得到 XamlParseExceptionInvalidOperationException

    其次你只需要使用_MyWindow.ShowDialog()来显示窗口。 这可以防止所有者窗口在所拥有的窗口之上移动,即使它被设置为在子窗口显示之后的最顶层。

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 2018-05-24
      • 2015-10-16
      相关资源
      最近更新 更多