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