Вы имеете в виду ситуацию, аналогичную 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