我有两个显示器,非主显示器(1 号)设置为主显示器(2 号)左上角,如这个:
我再说一遍:2 号 是主要监视器。
代码如下:
Cursor.Position = new Point(-500, -500);
发生的情况是,当光标最初位于主监视器(编号 2)时,执行代码后,光标移动到监视器 编号 1,以从底部向上 500 像素但最右边的位置。这里:
而不是这里:
运行上面的代码两次后,像这样:
Cursor.Position = new Point(-500, -500);
Cursor.Position = new Point(-500, -500);
它到达了正确的位置。
问题是这段代码看起来像 hack,我想避免它,并以“正确”的方式将光标移到正确的位置。
那么我该如何实现呢?
最佳答案
当您有多个屏幕时,您必须注意每个屏幕的边界
C# 提供了一个屏幕数组,您可以遍历该数组以获取有关屏幕坐标的更多信息,即 Screen.AllScreens
请看下图,它表明只有主屏幕从 2D(X,Y) 平面中的 X:0 和 Y:0 开始,我们可以在任何地方调整第二屏幕,在我的例子中它有位置 (-1366,305 ) 如图所示。和不同点ar 每个屏幕都有其从左到右和从上到下的界限。您可以使用该边界到达代码中所示的确切位置,如果我将其边界值添加到点,我可以移动到任何屏幕的任何点。
//To move on First Screen use its Bounds
Cursor.Position = new Point(300 + Screen.AllScreens[0].Bounds.Left, 300 + Screen.AllScreens[0].Bounds.Top);
//To move on Second Screen use its Bounds
Cursor.Position = new Point(300 + Screen.AllScreens[1].Bounds.Left, 300 + Screen.AllScreens[1].Bounds.Top);
关于c# - 设置 Cursor.Position "half"- 有效(从一台显示器到另一台显示器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71578927/