相关疑难解决方法(0)

Screen.AllScreen未提供正确的监视器计数

我在我的程序中做了类似的事情:

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".

我的显示器知道它没有连接(它已进入'节电'模式),控制面板知道它没有连接(它只显示一个显示器).

那我错过了什么?我怎么知道只有一台显示器?

.net c# multiple-monitors windows-7 winforms

15
推荐指数
2
解决办法
1万
查看次数

如何强制WPF启动窗口到特定的屏幕?

我有一个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)

有没有其他方法来启动启动表单?我试图只调用构造函数,但这会导致崩溃,因为某些资源不再被加载.

c# wpf xaml window startup

7
推荐指数
2
解决办法
8467
查看次数

标签 统计

c# ×2

.net ×1

multiple-monitors ×1

startup ×1

window ×1

windows-7 ×1

winforms ×1

wpf ×1

xaml ×1