为什么 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}
应该在第二屏。我想到了可能性:
- 进行拖放操作时光标位置被锁定。
- 第一个屏幕的分辨率小于第二个屏幕,可能会在第一个屏幕上方创建一些虚拟 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。
在调试会话中,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}
应该在第二屏。我想到了可能性:
- 进行拖放操作时光标位置被锁定。
- 第一个屏幕的分辨率小于第二个屏幕,可能会在第一个屏幕上方创建一些虚拟 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。