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 

Тип события

DragEventHandler

Примеры

В следующем примере кода демонстрируется операция перетаскивания между двумя ListBox элементами управления. В примере вызывается DoDragDrop метод при запуске действия перетаскивания. Действие перетаскивания начинается, если мышь переместилась больше, чем SystemInformation.DragSize из расположения мыши во время MouseDown события. Метод IndexFromPoint используется для определения индекса элемента, перетаскиваемого MouseDown во время события.

В этом примере также демонстрируется использование пользовательских курсоров для операции перетаскивания. В этом примере требуется, чтобы два файла курсора и 3dwarro.cur 3dwno.cur, существовали в каталоге приложения, для пользовательских курсоров перетаскивания и курсоров без перетаскивания соответственно. Если установлен флажок, будут использоваться UseCustomCursorsCheckCheckBox пользовательские курсоры. Настраиваемые курсоры задаются в обработчике GiveFeedback событий.

Состояние клавиатуры вычисляется в обработчике DragOver событий справа ListBox, чтобы определить, какая операция перетаскивания будет зависеть от состояния клавиш SHIFT, CTRL, ALT или CTRL+ALT. Расположение в месте, где ListBox будет происходить удаление, также определяется во время DragOver события. Если данные, которые нужно удалить, не Stringявляются, DragEventArgs.Effect то для нее задано значение None DragDropEffects. Наконец, в списке DropLocationLabelLabelотображается состояние перетаскивания.

Данные, которые нужно удалить справа 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 и свойства находятся DragEventArgs в координатах экрана, а не в клиентских координатахY. Следующая строка кода Visual C# преобразует свойства в клиент Point.

    Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));  
    

Дополнительные сведения об обработке событий см. в разделе "Обработка и вызов событий".

Применяется к

См. также раздел