Control.DragEnter Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит, когда объект перетаскивается в границы элемента управления.
public:
event System::Windows::Forms::DragEventHandler ^ DragEnter;
public event System.Windows.Forms.DragEventHandler DragEnter;
member this.DragEnter : System.Windows.Forms.DragEventHandler
Public Custom Event DragEnter As DragEventHandler
Тип события
Примеры
В следующем примере кода демонстрируется операция перетаскивания между двумя ListBox элементами управления. В примере вызывается DoDragDrop метод при запуске действия перетаскивания. Действие перетаскивания начинается, если мышь переместилась больше, чем SystemInformation.DragSize из расположения мыши во время MouseDown события. Метод IndexFromPoint используется для определения индекса элемента для перетаскивания во время MouseDown
события.
В этом примере также демонстрируется использование пользовательских курсоров для операции перетаскивания. В примере требуется, чтобы два файла курсора и 3dwarro.cur
3dwno.cur
, существовали в каталоге приложения, для пользовательских курсоров перетаскивания и без перетаскивания соответственно. Пользовательские курсоры будут использоваться UseCustomCursorsCheck
CheckBox при проверке. Пользовательские курсоры задаются в обработчике GiveFeedback событий.
Состояние клавиатуры вычисляется в DragOver обработчике событий справа ListBox
, чтобы определить, какая операция перетаскивания будет зависеть от состояния клавиш SHIFT, CTRL, ALT или CTRL+ALT. Расположение в месте, где ListBox
будет происходить удаление, также определяется во время DragOver
события. Если удаляемые данные не String
являются, DragEventArgs.Effect то для нее задано значение None
DragDropEffects. Наконец, в списке DropLocationLabel
Labelотображается состояние удаления.
Данные, которые нужно удалить справаListBox
, определяются в обработчике DragDrop событий, и String
значение добавляется в соответствующее место в .ListBox
Если операция перетаскивания перемещается за пределы формы, операция перетаскивания отменяется в обработчике QueryContinueDrag событий.
Этот фрагмент кода демонстрирует использование DragEnter события. См. DoDragDrop метод для полного примера кода.
void ListDragTarget_DragEnter( Object^ /*sender*/, System::Windows::Forms::DragEventArgs^ /*e*/ )
{
// Reset the label text.
DropLocationLabel->Text = "None";
}
private void ListDragTarget_DragEnter(object sender, DragEventArgs e)
{
// Reset the label text.
DropLocationLabel.Text = "None";
}
Private Sub ListDragTarget_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragEnter
' Reset the label text.
DropLocationLabel.Text = "None"
End Sub
Комментарии
Событие DragEnter возникает, когда пользователь сначала перетаскивает курсор мыши над элементом управления во время операции перетаскивания.
Примечание
В версиях, предшествующих платформа .NET Framework 2.0, если вы помещаете UserControl события DragEnter в форму Windows DragDrop и перетаскиваете что-то в UserControl момент разработки, DropDrop
возникают события и DropEnter
события. Однако при закрытии и повторном открытии решения DragEnter события DragDrop не вызываются снова.
Далее описывается, как и когда возникают события, связанные с операциями перетаскивания.
Метод DoDragDrop определяет элемент управления в текущем расположении курсора. Затем он проверяет, является ли элемент управления допустимым целевым объектом удаления.
Если элемент управления является допустимым целевым объектом перетаскивания, GiveFeedback событие вызывается с указанным эффектом перетаскивания. Список эффектов перетаскивания см. в перечислении DragDropEffects.
Отслеживаются изменения позиции указателя мыши, состояния клавиатуры и кнопки мыши.
Если пользователь перемещает указатель мыши за пределы окна, происходит событие DragLeave.
Если указатель мыши перемещается на другой элемент управления, для этого элемента вызывается событие DragEnter.
При перемещении мыши в пределах одного элемента управления возникает событие DragOver.
При изменении состояния QueryContinueDrag клавиатуры или кнопки мыши событие вызывается и определяет, следует ли продолжить перетаскивание, удалить данные или отменить операцию на основе значения Action свойства события QueryContinueDragEventArgs.
Если значение DragAction равно
Continue
, DragOver событие вызывается для продолжения операции, и GiveFeedback событие вызывается с новым эффектом, чтобы можно было задать соответствующую визуальную обратную связь. Список допустимых эффектов сброса см. в перечислении DragDropEffects.Примечание
События DragOver GiveFeedback связаны таким образом, чтобы при перемещении мыши по целевому объекту перетаскивания пользователь получил самые актуальные отзывы о положении мыши.
Если значение DragAction равно
Drop
, значение эффекта перетаскивания возвращается источнику, чтобы исходное приложение смогла выполнить соответствующую операцию с исходными данными, например вырезать данные, если операция была перемещением.Если значение DragAction равно
Cancel
, DragLeave вызывается событие.Примечание
Свойства X экрана Y DragEventArgs находятся в координатах экрана, а не в клиентских координатах. Следующая строка кода Visual C# преобразует свойства в клиентPoint.
Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
Дополнительные сведения об обработке событий см. в разделе "Обработка и создание событий".