我有一个使用多显示器的 c# Windows 应用程序。该应用程序有一个必须在主显示屏上显示的主窗体和一个需要在第二个屏幕上显示的全屏窗体(第二个窗体显示在 3d 护目镜中)。
这是我分配屏幕的方式:
Screen.AllScreens[0]
用于第一个屏幕,Screen.AllScreens[1]
用于第二个屏幕,但我在使用新版本的 3d 护目镜时遇到问题,因为这是HDMI,即使我将主屏幕设置为显示器 (DVI),护目镜也设置为屏幕 1。
可能是使用 Screen.AllScreens[0].Bounds.X == 0
来检查屏幕 0 是否为主屏幕的更好方法?
更新:我在 Screen.AllScreens[x]
之前使用了 Screen.PrimaryScreen
属性,但该属性也给我带来了一些我真的不喜欢的显示器护目镜配置的麻烦记住他们。
最佳答案
请注意,在 Windows 中,可以将主/副显示器移动到任何位置(我花了几年时间将副显示器放在主显示器之上),因此检查边界将毫无用处。
相反,请注意 Screen
类有一个 Primary
Property检查给定的屏幕是否是主要的。你可以这样
secondaryScreen = Screen.AllScreens
.Where(s => s.Primary == false)
.Single(); // Note: this will throw an exception if there isn't a secondary screen, or more than one.
... 或 PrimaryScreen
static Property直接获取主 Screen
。
关于c# - 使用多显示器设置在 C# 中获取真正的主屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28506288/