如何让cableunplugging/re-plugging不影响程序中的屏号

How to let cable unplugging/re-plugging not affect the screen numbers in the program

这可能是个愚蠢的问题,但我找不到这方面的任何信息。有什么办法可以将特定的表格显示到特定的监视器上吗?

我正在用C#制作一个WinForm应用程序,我需要让它不受HDMI线断开和重新连接的影响。我有3个表单(A、B、C),表单A需要一直显示在monitorA上,Form B在monitorB上,Form C在monitorC上。我目前正在为每台显示器分配每张表格,例如

FormA.Location = Screen.AllScreens[0].WorkingArea.Location; //screen 0 = monitor A
FormB.Location = Screen.AllScreens[1].WorkingArea.Location; //screen 1 = monitor B
FormC.Location = Screen.AllScreens[2].WorkingArea.Location; //screen 2 = monitor C

在我断开电缆并重新连接之前,它工作正常。有时,它不会影响程序,但有时,断开并重新连接电缆会改变分配给每个显示器的屏幕编号,并弄乱屏幕配置。像Form A显示在monitorC上。

屏号好像是在硬件端分配的,但是有什么办法可以解决monitor-form关系吗?感谢您的帮助。

恐怕这是 Windows 所做的事情,而且不容易避免。如果您有 nVidia Pro 图形适配器或其他支持它的适配器,您可以设置图形驱动程序以从文件而不是从显示器加载显示器 EDID,并锁定 Windows 认为显示器是永久连接的。可能还有其他品牌也支持禁用显示器检测。