Как я могу сказать, что операция перетаскивания не удалась? - PullRequest
5 голосов
/ 02 февраля 2009

Мне кажется, нет способа определить, была ли операция перетаскивания успешной или нет, но должен быть какой-то способ. Предположим, что я хочу выполнить «перемещение» от источника к месту назначения. Если пользователь отпускает указатель мыши над каким-либо приложением или элементом управления, которые не могут принять сброс, как я могу сказать?

В этом отношении, как я могу сказать, когда перетаскивание закончено вообще?

Я видел этот вопрос , но его решение у меня не работает, и e.Action это всегда Continue.

Ответы [ 3 ]

7 голосов
/ 03 февраля 2009

Я не уверен, что это может вам помочь, но метод DoDragDrop возвращает окончательное значение DragDropEffects.

var ret = DoDragDrop( ... );
if(ret == DragDropEffects.None) //not successfull
else // etc.
3 голосов
/ 03 февраля 2009

Ах, я думаю, что понял. Оказывается, что вызов DoDragDrop на самом деле синхронный (как слабый), и возвращает значение DragDropEffects, которое установлено в None, если операция не удалась. Таким образом, в основном это означает, что приложение (или, по крайней мере, поток пользовательского интерфейса) будет заморожено до тех пор, пока пользователь находится в середине перетаскивания. Это не кажется мне очень элегантным решением.

Хорошо, cz_dl. Я вижу, вы только что опубликовали эту самую вещь, поэтому я дам вам ответ.

Это я не понимаю, хотя: как пункт назначения может определить, должен ли операция быть движением или копией? Разве это не должно зависеть от исходного приложения?

0 голосов
/ 03 февраля 2009

Невозможно добавить комментарий, поэтому еще один ответ. Я также был удивлен, когда впервые увидел, что DoDragDrop вызывается синхронно и почему-то не заморозил пользовательский интерфейс.

Но копирование / перемещение материала, которое я считаю, вполне логично. Вы можете указать разрешенные эффекты при вызове метода DoDragDrop в исходном приложении, и это все, что для вас важно. Как приложение-получатель будет обрабатывать и использовать данные по своему усмотрению.

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