Событие происходит в источнике перетаскивания, когда перетаскивание завершено или отменено - PullRequest
4 голосов
/ 28 ноября 2011

Я знаю, что обычно есть метод DoDragDrop, который запускает операцию перетаскивания.И что есть события (такие как DragEnter, DragOver, DragDrop, DragLeave), которые могут быть обработаны на целевой стороне.

Есть ли какие-либо события в источнике перетаскивания, которые сообщат мне, была ли операция перетаскивания завершена или, возможно, отменена?

Ответы [ 2 ]

6 голосов
/ 28 ноября 2011

Да, DoDragDrop () имеет возвращаемое значение.Возвращает DragDropEffects.None, если удаление было отменено.

1 голос
/ 29 ноября 2011

Вы имеете в виду ситуацию, аналогичную delete-on-paste в проводнике Windows, когда файл не удаляется из исходной папки до тех пор, пока не будет выполнена операция вставки.

http://msdn.microsoft.com/en-us/library/bb776904(VS.85).aspx#delete_on_paste

Простой ответ

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

Обновление: Да, вы также можете проверить результаты метода DoDragDrop, чтобы определить, было ли удаление успешным. Просто убедитесь, что ваш код обработки отбрасывания правильно устанавливает для Effect значение None, если при завершении удаления произошла ошибка, иначе ваш код с DoDragDrop будет считать, что удаление прошло успешно. Этот метод будет работать даже между двумя экземплярами вашего приложения.

Сильный ответ

Если вы делаете это между двумя экземплярами вашего приложения, и вам нужно передать больше информации о том, было ли удаление успешным, вам нужно реализовать версию OLE IDataObject, чтобы экземпляр приложения, который если цель перетаскивания завершает перетаскивание, она может вызвать SetData исходного объекта для отправки информации о результате. Это сложно сделать, но, безусловно, возможно.

Подробнее об этом см. По следующим ссылкам:

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.comtypes.idataobject.aspx

http://blogs.msdn.com/b/delay/archive/2009/10/26/creating-something-from-nothing-developer-friendly-virtual-file-implementation-for-net.aspx

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