我在我的程序中做了类似的事情:
Int32 currentMonitorCount = Screen.AllScreens.Length;
if (currentMonitorCount < 2)
{
//Put app in single screen mode.
}
else
{
//Put app in dual screen mode.
}
Run Code Online (Sandbox Code Playgroud)
非常重要我的应用程序可识别当前连接的监视器数量.
但是,在我多次插入/拔出显示器后,Screen.AllScreens.Length始终返回"2".
我的显示器知道它没有连接(它已进入'节电'模式),控制面板知道它没有连接(它只显示一个显示器).
那我错过了什么?我怎么知道只有一台显示器?
我有一个WPF应用程序,它将通过专用窗口显示有关投影仪的信息.我想配置用于投影仪显示的屏幕以及用于主应用程序窗口的内容.
此代码将在指定屏幕上生成投影仪输出:
var screen = GetProjectorScreen();
_projectorWindow = new ProjectorWindow();
_projectorWindow.Left = screen.WorkingArea.Left;
_projectorWindow.Top = screen.WorkingArea.Top;
_projectorWindow.Owner = _parentWindow;
_projectorWindow.Show();
public static Screen GetProjectorScreen()
{
var screens = Screen.AllScreens;
if (screens.Length > 1 && Settings.Default.DisplayScreen < screens.Length)
{
return screens[Settings.Default.DisplayScreen];
}
return screens[0];
}
Run Code Online (Sandbox Code Playgroud)
我试图用启动表单做同样的技巧,但到目前为止没有成功.我试图在MainWindow构造函数中设置Top和Left属性,但这不起作用.
通过设置StartupUri从App.xaml.cs启动启动窗口:
StartupUri = new Uri("Windows/MainWindow.xaml", UriKind.Relative);
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来启动启动表单?我试图只调用构造函数,但这会导致崩溃,因为某些资源不再被加载.