Перетаскивание происходит из "источника" в "цель". Когда источник вызывает DoDragDrop() с allowedEffects как DragDropEffects.Copy, тогда я могу отменить падение, установив Effects = DragDropEffects.None на цель (в событии DragOver).
Но такая же ситуация не срабатывает, когда я устанавливаю разрешенные эффекты как DragDropEffects.Move.
Чтобы воспроизвести ситуацию, загрузите образец из http://jaimersamples.members.winisp.net/samples/dragdrop/drag.zip
Измените строку.. (на DragDropEffects.Move)
DragDrop.DoDragDrop(this.DragSource, data, DragDropEffects.Copy);
Добавить строку.
void Window1_DragOver(object sender, DragEventArgs args)
{
args.Effects = DragDropEffects.None;
А также закомментируйте весь файл DragSource_GiveFeedback..
void DragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
//System.Diagnostics.Debug.WriteLine("DragSource_GiveFeedback " + e.Effects.ToString());
Есть ли какая-то ошибка в структуре, или я просто не вижу ничего очевидного?