Я думаю, что это хороший метод для Drag & Drop
Хороший способ для штопки и дропа объясняется как
Определить перетаскивание как комбинацию MouseMove и MouseLeftButtonDown
Найдите данные, которые вы хотите перетащить, и создайте объект DataObject, содержащий формат, данные и разрешенные эффекты.
Инициируйте перетаскивание, вызвав DoDragDrop ()
Установите для свойства AllowDrop значение True для элементов, которые вы хотите разрешить удаление.
Зарегистрируйте обработчик для события DragEnter, чтобы обнаружить перетаскивание по месту размещения. Проверьте формат и данные, вызвав GetDataPresent () для аргументов события. Если данные могут быть отброшены, установите свойство Effect в аргументах события, чтобы отобразить соответствующий курсор мыши.
Когда пользователь отпускает кнопку мыши, вызывается событие DragDrop. Получите данные, вызвав метод GetData () для объекта Data, указанного в аргументах события.
Вы можете найти полную статью здесь