Control.DragEnter Событие

Определение

Происходит, когда объект перетаскивается в границы элемента управления.

public:
 event System::Windows::Forms::DragEventHandler ^ 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, для настраиваемых курсоров перетаскивания и без перетаскивания соответственно. Пользовательские курсоры будут использоваться, если 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 события with DragEnter и в DragDrop Форму Windows Forms и перетаскиваете что-то на 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 возникает событие .

    Примечание

    Свойства XDragEventArgs и Y объекта находятся в экранных координатах, а не в координатах клиента. В следующей строке кода Visual C# свойства преобразуются в клиент Point.

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

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

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

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