В сеансе отладки Cursor.Position = {X = 1867 Y = 538}
и Screen.FromPoint(Cursor.Position)
возвращает объект Screen
, имеющий границы {X = 0 Y = 0 Width = 1366 Height = 768}
.
Если я деактивирую первый экран, объект Screen имеет границы {X = 0 Y = 0 Width = 1680 Height = 1050}
(разрешение второго экрана больше, чем у первого экрана).
Итак, я вижу, что прямоугольник Screen.Bounds не говорит мне прямоугольник, который является экраном относительно глобального разрешения, которое включает оба экрана, но говорит мне о размере экрана, с X = Y = 0
.
Проблема в том, что позиция курсора {X = 2203 Y = 579}
должна быть на втором экране. Я думал о возможностях:
- положение курсора блокируется при выполнении операции перетаскивания.
- первый экран, имеющий меньшее разрешение, чем второй экран, может создать некоторое виртуальное пространство над первым экраном.
Либо с включенным или отключенным первым / вторым экраном / с, у меня та же проблема:
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}
.