昨晚我在运行Windows 7嵌入式标准版64位操作系统的一台电脑上看到了奇怪的事情,该电脑连接了两个显示器。显示分辨率对话框将这两个显示器从左往右标记为显示器1和显示器2。当我运行自己编写的程序,该程序需要同时使用两个屏幕时,我预期输出应该出现在显示器1上,但实际上出现在了最右侧的显示器上;同样的,我预期输出应该出现在显示器2上,但实际上出现在了最左侧的显示器上。
花了一些时间在此处及Google上搜索,最终我使用了一些代码创建控制台应用程序来显示System.Windows.Forms.Screen.AllScreens的内容:
在一个测试机上运行,得到了我期望的结果——AllScreens的顺序与显示分辨率对话框的顺序相匹配。
但是,在有问题的机器上,上面代码的输出却被颠倒了。DISPLAY1处于第二个屏幕(最右侧)的位置,而DISPLAY2则位于最左侧的屏幕上。
这真的很奇怪。由于这不是使用我的程序,所以它应该是.NET内部的问题。同样的代码在其他类似的机器上也能正常工作,因此我认为这不是一个普遍性问题,而是一个仅限于此台机器的问题。我尝试了更多类似问题的搜索,但都没有结果,可能是由于搜索词汇(监视器、屏幕、.NET等)匹配了许多与此问题无关的项目。
有人之前见过这种情况吗?最好有一个解决方法。重新安装.NET 4包没有帮助。在显示分辨率对话框中更改位置,然后再更改回来也没有帮助,即使在两次更改之间重新启动也没有用。
谢谢。
花了一些时间在此处及Google上搜索,最终我使用了一些代码创建控制台应用程序来显示System.Windows.Forms.Screen.AllScreens的内容:
// For each screen, add the screen properties to a list box.
foreach (var screen in System.Windows.Forms.Screen.AllScreens)
{
Console.WriteLine("Device Name: " + screen.DeviceName);
Console.WriteLine("Bounds: " +
screen.Bounds.ToString());
Console.WriteLine("Type: " +
screen.GetType().ToString());
Console.WriteLine("Working Area: " +
screen.WorkingArea.ToString());
Console.WriteLine("Primary Screen: " +
screen.Primary.ToString());
}
在一个测试机上运行,得到了我期望的结果——AllScreens的顺序与显示分辨率对话框的顺序相匹配。
但是,在有问题的机器上,上面代码的输出却被颠倒了。DISPLAY1处于第二个屏幕(最右侧)的位置,而DISPLAY2则位于最左侧的屏幕上。
这真的很奇怪。由于这不是使用我的程序,所以它应该是.NET内部的问题。同样的代码在其他类似的机器上也能正常工作,因此我认为这不是一个普遍性问题,而是一个仅限于此台机器的问题。我尝试了更多类似问题的搜索,但都没有结果,可能是由于搜索词汇(监视器、屏幕、.NET等)匹配了许多与此问题无关的项目。
有人之前见过这种情况吗?最好有一个解决方法。重新安装.NET 4包没有帮助。在显示分辨率对话框中更改位置,然后再更改回来也没有帮助,即使在两次更改之间重新启动也没有用。
谢谢。