Функциональная возможность перетаскивания в Windows Forms

Windows Forms включает набор методов, событий и классов, реализующих режим перетаскивания. В этом разделе приводится обзор поддержки перетаскивания в Windows Forms. См. также раздел Операции перетаскивания и поддержка буфера обмена.

Выполнение операций перетаскивания

Для выполнения операций перетаскивания используйте метод DoDragDrop класса Control. Подробнее о том, как выполняется операция перетаскивания, см. в описании метода DoDragDrop. Для получения прямоугольника, над которым должен быть перемещен указатель мыши, чтобы началась операция перетаскивания, используется свойство DragSize класса SystemInformation.

С операцией перетаскивания связаны две категории событий: события, возникающие в текущем целевом объекте операции перетаскивания, и события, возникающие в ее исходном объекте.

События в текущем целевом объекте

В приведенной ниже таблице перечислены события, возникающие в текущем целевом объекте операции перетаскивания.

Событие мыши Description
DragEnter Это событие происходит при перетаскивании объекта внутрь границ элемента управления. Обработчик этого события принимает аргумент типа DragEventArgs.
DragOver Это событие происходит при перетаскивании объекта, пока указатель мыши находится в пределах границ элемента управления. Обработчик этого события принимает аргумент типа DragEventArgs.
DragDrop Это событие происходит при завершении операции перетаскивания. Обработчик этого события принимает аргумент типа DragEventArgs.
DragLeave Это событие возникает при перемещении объекта за границы элемента управления. Обработчик этого события принимает аргумент типа EventArgs.

В классе DragEventArgs содержится расположение указателя мыши, текущее состояние кнопок мыши и клавиш-модификаторов, перетаскиваемые данные и значения DragDropEffects, указывающие, какие операции допускаются источником события перетаскивания, и результат операции перетаскивания в целевой объект.

События в исходном объекте

В таблице ниже приведены события, возникающие в исходном объекте операции перетаскивания.

Событие мыши Description
GiveFeedback Это событие возникает во время операции перетаскивания. Оно позволяет дать пользователю визуальную подсказку о том, что происходит операция перетаскивания, в виде, например, изменения указателя мыши. Обработчик этого события принимает аргумент типа GiveFeedbackEventArgs.
QueryContinueDrag Это событие возникает во время операции перетаскивания и позволяет исходному объекту определить, следует ли отменить эту операцию. Обработчик этого события принимает аргумент типа QueryContinueDragEventArgs.

В классе QueryContinueDragEventArgs содержится текущее состояние кнопок мыши и клавиш-модификаторов, значение, указывающее, была ли нажата клавиша ESC, и значение DragAction, с помощью которого можно указать, следует ли продолжать операцию перетаскивания.

См. также