wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了.net – WPF中的窗口所有者,并不总是在顶层的行为大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

是否可以获得一些Window.owner的功能,而不用全部? 有两个窗口,窗口A和窗口B.我想让它选择任何一个将它们放在其他应用程序的顶部,但是可以覆盖另一个窗口. (实际上只有两个,但他们应该都表现相似.) 如果我将窗口B的所有者设置为A,则切换到任一窗口将会在其他应用程序(我想要的)前面,但也会强制B始终坐在A(我不想要的)顶部. 我实际上已经有代码跟踪窗口层次结构独立于所有者/ ownedW
是否可以获得一些Window.owner的功能,而不用全部?

有两个窗口,窗口A和窗口B.我想让它选择任何一个将它们放在其他应用程序的顶部,但是可以覆盖另一个窗口. (实际上只有两个,但他们应该都表现相似.)

如果我将窗口B的所有者设置为A,则切换到任一窗口将会在其他应用程序(我想要的)前面,但也会强制B始终坐在A(我不想要的)顶部.

我实际上已经有代码跟踪窗口层次结构独立于所有者/ ownedWindows,@R_331_9447@扩展它来排除激活问题.所以如果这简化了问题,我正在寻找的另一个答案是:

如何实际执行“当用户激活此窗口时,将特定的一组窗口(应用程序中的其他所有内容)添加到我下方的Z顺序,同时保留其相对于彼此的现有Z顺序” ?

一个可能的解决方案是拥有一个隐藏的窗口,拥有您应用程序中的所有窗口.

你会声明如下:

<Window
    Opacity="0"
    ShowInTaskbar="false"
    AllowsTransparency="true"
    WindowStyle="None">

确保从您的App.xaml中删除StartupUri.而在您的App.xaml.cs中,您将覆盖OnStartup,如下所示:

protected override void OnStartup(StartupEventArgs E)
{
    HiddenMainWindow window = new HiddenMainWindow();
    window.Show();

    Window1 one = new Window1();
    one.owner = window;
    one.Show();

    Window2 two = new Window2();
    two.owner = window;
    two.Show();
}

一个困难将是如何处理关闭实际应用程序.如果其中一个窗口被认为是MainWindow,您可以将应用程序ShutdownMode更改为ShutdownMode.onMainWindowClose,然后将MainWindow属性设置为这些窗口中的任一个.否则,您将需要确定何时关闭所有窗口并显式调用Shutdown.

大佬总结

以上是大佬教程为你收集整理的.net – WPF中的窗口所有者,并不总是在顶层的行为全部内容,希望文章能够帮你解决.net – WPF中的窗口所有者,并不总是在顶层的行为所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。