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

Why does Cursor.Position have a wrong value while debugging?

在调试会话中,Cursor.Position = {X = 1867 Y = 538}Screen.FromPoint(Cursor.Position) returns 具有边界 {X = 0 Y = 0 Width = 1366 Height = 768}.

Screen 对象

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

所以我看到 Screen.Bounds 矩形没有告诉我相对于包括两个屏幕的全局分辨率的屏幕矩形,但它告诉我屏幕的大小, X = Y = 0.

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

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

无论启用还是禁用first/second screen/s,我都遇到同样的问题:

MyListView.PointToClient(Cursor.Position)

returns一个点,{X = 1787 Y = -79}Y为负数,鼠标光标下的ListViewItem是找不到的。

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

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

现在我看到在调试时,Cursor.Position 得到了更新(在断点处锁定执行时它没有被锁定)。

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