C# 如何在第二台显示器上显示SplashScreen?

C# 如何在第二台显示器上显示SplashScreen?,c#,.net,wpf,C#,.net,Wpf,如何在第二台显示器上显示SplashScreen?现在它只在主监视器上显示,但应用程序在辅助监视器上启动。查看System.Windows.Forms.Screen类。 您可以使用Screen.GetWorkingArea()获取当前显示,然后基于此设置启动屏幕的位置Screen.FromControl()和Screen.AllScreens也可能有用。您可以将“Screen”类与启动屏幕的WindowStartupLocation属性一起使用(我假设您正在为此使用一个窗口) 比如: 若需要,你

如何在第二台显示器上显示SplashScreen?现在它只在主监视器上显示,但应用程序在辅助监视器上启动。

查看System.Windows.Forms.Screen类。
您可以使用
Screen.GetWorkingArea()
获取当前显示,然后基于此设置启动屏幕的位置
Screen.FromControl()
Screen.AllScreens
也可能有用。

您可以将“Screen”类与启动屏幕的WindowStartupLocation属性一起使用(我假设您正在为此使用一个窗口)

比如:


若需要,你们当然可以自己把它放在中心。获取屏幕高度和窗口高度并计算中心。

没有属性可控制标准WPF启动屏幕的显示位置


如果需要更改默认行为,则需要执行自己的实现

我猜您的意思是如何在应用程序将要启动的同一个监视器上显示启动屏幕,或者如何检测应用程序将要启动的监视器?WPF SplashScreen类大量使用pinvoke以尽可能快地显示图像。本机窗口位置硬编码为位于主监视器的中心。没有什么可以改变的。因此,除了放弃SplashScreen之外,唯一体面的解决办法就是让主窗口也显示在主显示器上。
Window someWindow = new SomeWindow();
someWindow.WindowStartupLocation = WindowStartupLocation.Manual;
someWindow.Left = Screen.AllScreens[1].Bounds.Left;
someWindow.Top = Screen.AllScreens[1].Bounds.Top;