.NET中的多个监视器

无论硬件配置如何,是否从.NET的Screen.AllScreens返回所有显示? 例如,在一台PC上,您可以:

  1. video卡输出两个显示=总共2个显示
  2. video卡每个显示1个显示=总共2个显示,
  3. video卡每个显示2个显示器= 6个显示器,
  4. Eyefinity卡可显示6个显示屏(在显示端口上)

在所有这些情况下,如果我使用Screen.AllScreens ,我可以单独访问每个显示器吗?

另外,如果我有一张扩展模式的卡,这意味着2个显示器插入一张卡但是它只是一个大桌面(我在工作中使用的是什么)怎么办? 我还可以指定要在一个屏幕上显示的内容吗?

是的,Windows并不关心屏幕如何通过video适配器分布。 它只是为每个屏幕提供了自己的坐标,具体取决于您在Display小程序中如何排列它们。 通过将其位置和大小设置为适合Screen.Bounds,您可以在特定的窗口上显示窗口

扩展桌面不会影响屏幕数量。

假设每个显示器有1个屏幕应该是安全的。 虽然某些硬件可能会报告错误的显示计数,但这种情况非常罕见。 在这种情况下,您会在控制面板中注意到您的计数不正确。

AllScreens属性将列出Windows在控制面板中显示的相同监视器。 例如,如果将Eyefinity设置为单个大表面(SLS),它将在列表中显示为单个条目; 如果你将它设置为6个separete监视器,它将是列表中的6个条目。