Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF窗口是否仅用于自己的应用程序?_C#_Wpf_Window_Topmost - Fatal编程技术网

C# WPF窗口是否仅用于自己的应用程序?

C# WPF窗口是否仅用于自己的应用程序?,c#,wpf,window,topmost,C#,Wpf,Window,Topmost,我的WPF应用程序中的Splashscreen/Loading窗口设置为Topmost=“True”。现在,即使您切换到另一个应用程序(因为加载将需要一些时间),此窗口也将位于所有其他窗口之上。我不想要这种行为 如果我将Topmost=“False”窗口设置为不在最上面。但是,如果在使用另一个应用程序后切换回我的应用程序,我的客户有时不会意识到加载窗口仍在工作。应用程序似乎没有响应,因为后台的加载窗口仍然是活动窗口,并且是模态窗口 我希望加载窗口位于最上面,但仅当我的应用程序位于前台时。如果您切

我的WPF应用程序中的Splashscreen/Loading窗口设置为Topmost=“True”。现在,即使您切换到另一个应用程序(因为加载将需要一些时间),此窗口也将位于所有其他窗口之上。我不想要这种行为

如果我将Topmost=“False”窗口设置为不在最上面。但是,如果在使用另一个应用程序后切换回我的应用程序,我的客户有时不会意识到加载窗口仍在工作。应用程序似乎没有响应,因为后台的加载窗口仍然是活动窗口,并且是模态窗口


我希望加载窗口位于最上面,但仅当我的应用程序位于前台时。如果您切换到另一个程序,当您切换回来时,窗口应该消失并重新出现在最顶端。

您可以尝试使用窗口的“所有者”属性,这样启动屏幕将始终与其他窗口重叠。

我想主窗口加载模式的更改可能会有所帮助。如果可以将加载窗口的耗时部分放在后台线程上,则可以采用以下路径:

  • 显示主窗口空或裸骨骼(空字段/网格等)
  • 启动异步加载方法以获取数据并填充主窗口
  • 创建启动屏幕,将所有者设置为self并显示
  • 加载完成后,确保关闭启动屏幕
    在加载过程中,这应该会使启动保持在顶部。

    只是出于好奇,为什么在显示启动屏幕时同时加载其他窗口?一般来说,当应用程序使用启动屏幕时,这是该应用程序当时唯一可见的窗口……因为加载需要很长时间,我的老板希望一些数据在主窗口中已经可见。您不能与数据交互,但至少可以查看数据。在我的应用程序中,主窗口需要时间来创建,因此在显示初始屏幕时尚未创建。所以我还不能将闪屏窗口的所有者设置为主窗口。