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

时间:2015-02-13 18:30:50

标签: 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,但该属性也让我遇到了一些我真的不记得的监视器护目镜配置问题。

1 个答案:

答案 0 :(得分:2)

请注意,在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