c# - 使用多显示器设置在 C# 中获取真正的主屏幕?

标签 c# winforms screen

我有一个使用多显示器的 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/

相关文章:

c# - 当我不能使函数本身成为静态时如何调用非静态函数

c# - 如何使用 C# 在字符串中显示符号?

amazon-ec2 - 更改 EC2 Windows server 8 R2 上的屏幕分辨率?

c# - 使用运算符 & |关于 C# 中的枚举?

c# - 自定义 DataTypeAttribute 未正确触发验证

c# - 读取具有不同工作表名称的多个 Excel 工作表

javascript - 如何在没有javascript的情况下检测屏幕分辨率?

c# - 尝试更新或删除商店中不存在的实体

c# - VS2010 设计器 Z 顺序

Android 未找到 XLargeScreens 的资源标识符