为什么在调试时Cursor.Position的值错误?

时间:2019-01-15 15:39:46

标签: c# winforms cursor-position

在调试会话中,Cursor.Position = {X = 1867 Y = 538}Screen.FromPoint(Cursor.Position)返回一个边界为{X = 0 Y = 0 Width = 1366 Height = 768}的{​​{3}}对象。

如果我停用第一个屏幕,则Screen对象的边界为{X = 0 Y = 0 Width = 1680 Height = 1050}(第二个屏幕的分辨率比第一个屏幕大)。

因此,我看到Screen.Bounds矩形没有告诉我相对于包括两个屏幕的全局分辨率的屏幕矩形,但是它告诉了我使用X = Y = 0的屏幕大小。 / p>

问题是光标位置{X = 2203 Y = 579}应该在第二个屏幕上。我想到了可能性:

  1. 进行拖放操作时,光标位置被锁定。
  2. 分辨率低于第二个屏幕的第一个屏幕可能会在第一个屏幕上方创建一些虚拟空间。

启用或禁用第一屏/第二屏,我都有相同的问题:

MyListView.PointToClient(Cursor.Position)

{X = 1787 Y = -79}返回的点,Y为负,将无法在鼠标光标下找到ListViewItem。

MyListView.Bounds = {X = 3 Y = 38 Width = 406 Height = 219}

我移动了固定在第一个屏幕左上角的程序窗口,并且发生了同样的事情,Cursor.Position为{X = 2231 Y = 571}

1 个答案:

答案 0 :(得分:0)

现在我看到在调试时,Cursor.Position被更新(当执行被锁定在断点时它不会被锁定)。

最后,问题是我检查了一个变异数不等于-1,而不是等于-1。