Как очистить Cursor.Clip в C # и позволить курсору снова свободно двигаться? - PullRequest
3 голосов
/ 26 ноября 2009

Я пытаюсь заблокировать курсор в форме, это для приложения блокировки мыши, я пытаюсь расположить курсор, чтобы он сбросил Cursor.Clip, когда они его разблокируют.

Пока у меня есть:

Cursor.Clip = new Rectangle(x +8, y +30, Size.Width -16, Size.Height -38);

Это прекрасно работает.

Но я не могу понять, как очистить клип, когда они его разблокируют. Я пытался Cursor.Dispose(); Но это не работает.

Есть идеи? Спасибо.

Ответы [ 3 ]

10 голосов
/ 15 декабря 2009

на самом деле идея состоит в том, чтобы просто установить его в новый прямоугольник

Cursor.Clip = new Rectangle();

Работает независимо от ситуации.

1 голос
/ 26 ноября 2009

Попробуйте: при запуске приложения получите значение Cursor.Clip и сохраните его как значение без клипа. Затем, когда вы хотите сбросить клип, присвойте незафиксированное значение.

ОБНОВЛЕНИЕ : На этой странице говорится, что для отсоединения курсора в VB.NET достаточно сделать Cursor.Clip=Nothing. Но это странно, поскольку Rectangle - это структура, и поэтому она не может быть установлена ​​в нуль. Так что в C #, может быть, это будет Cursor.Clip=Rectangle.Empty или Cursor.Clip=default(Rectangle)?

1 голос
/ 26 ноября 2009

Установите Clip на Rectangle, который содержит размеры экрана.

Cursor.Clip = Screen.PrimaryScreen.Bounds;

Конечно, это не будет работать с настройками двух мониторов, но вы поняли.

...