Просто чтобы посмотреть, что происходит, я заменил MemoryStream на DragDropEffects , например:
data.SetData("FileDrop", files);
data.SetData("Preferred DropEffect", DragDropEffects.Move);
По-видимому, он работает как подлинный вырез, а не как копия! (Это было на Windows 7 - я не пробовал другие операционные системы). К сожалению, это работает только случайно. Например,
data.SetData("Preferred DropEffect", DragDropEffects.Copy);
не дает копии (по-прежнему вырезано). Кажется, что ненулевое значение вызывает разрез, нулевое - копирование.