Проверьте, выполняется ли перетаскивание - PullRequest
2 голосов
/ 17 декабря 2008

Есть ли способ проверить, выполняется ли перетаскивание? Какой-то метод или win32 api, который можно проверить? Я знаю, что могу установить AllowDrop и использовать события, но в этом случае это не работает. В основном я хочу проверить, с кодом, если любой перетаскивание в процессе.

Ответы [ 4 ]

2 голосов
/ 26 января 2009

У меня был похожий вопрос, на который я сам ответил (после нескольких часов возни) См. - Как узнать, закончился ли Drag Drop в Winforms? .

В основном, если вы делаете так, как рекомендует ухо, вам нужно установить флаг, когда перетаскивание начинается рядом с вызовом DoDragDrop. Вам нужно будет сбросить флаг как в событии DragDrop, так и в QueryContinueDrag, если QueryContinueDragEventArgs указывает на удаление или отмену.

0 голосов
/ 30 января 2009

А как насчет обработчика событий QueryContinueDrag http://msdn.microsoft.com/en-us/library/system.windows.forms.control.querycontinuedrag.aspx? Вы можете подключить обработчик к любому элементу управления и проверить, выполняется ли операция перетаскивания, а затем отменить его, если хотите.

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

0 голосов
/ 17 декабря 2008

Предполагая, что это в контексте только вашего собственного кода, вы можете определить все места в вашем коде, где происходит перетаскивание, и установить глобальный логический флаг в значение true для продолжительности операции, а затем вернуться в false после это заканчивается.

Итак, следующий вопрос: как в вашем приложении запускаются операции перетаскивания?

0 голосов
/ 17 декабря 2008

Функция API GetCapture может быть хорошим началом. По сути, когда начинается операция перетаскивания, исходное окно «захватывает» мышь, что означает, что оно все равно будет получать все события мыши, даже если мышь покидает окно.

Однако приложения могут захватывать мышь и по другим причинам, поэтому это не на 100% надежно. Вы можете попробовать и посмотреть, насколько хорошо это работает для вас. А поскольку приложения выполняют свою собственную обработку перетаскивания, нет никакого способа быть уверенным в том, что происходит в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...