ToolStripItem.DragEnter Событие

Определение

Происходит, когда пользователь перетаскивает элемент в клиентскую область данного элемента.

public:
 event System::Windows::Forms::DragEventHandler ^ DragEnter;
[System.ComponentModel.Browsable(false)]
public event System.Windows.Forms.DragEventHandler DragEnter;
[System.ComponentModel.Browsable(false)]
public event System.Windows.Forms.DragEventHandler? DragEnter;
[<System.ComponentModel.Browsable(false)>]
member this.DragEnter : System.Windows.Forms.DragEventHandler 
Public Custom Event DragEnter As DragEventHandler 

Тип события

Атрибуты

Примеры

В следующем примере кода показано, как преобразовать X свойства и Y в клиент Point. Этот пример входит в состав более крупного примера использования класса ToolStripRenderer.

// This method defines the DragOver event behavior. 
protected override void OnDragOver(DragEventArgs dea)
{
    base.OnDragOver(dea);

    // Get the ToolStripButton control 
    // at the given mouse position.
    Point p = new Point(dea.X, dea.Y);
    ToolStripButton item = this.GetItemAt(
        this.PointToClient(p)) as ToolStripButton;

    // If the ToolStripButton control is the empty cell,
    // indicate that the move operation is valid.
    if( item == this.emptyCellButton )
    {
        // Set the drag operation to indicate a valid move.
        dea.Effect = DragDropEffects.Move;
    }
}
' This method defines the DragOver event behavior. 
Protected Overrides Sub OnDragOver(dea As DragEventArgs)
   MyBase.OnDragOver(dea)
   
   ' Get the ToolStripButton control 
   ' at the given mouse position.
   Dim p As New Point(dea.X, dea.Y)
   Dim item As ToolStripButton = CType(Me.GetItemAt(Me.PointToClient(p)), ToolStripButton)
   
   
   ' If the ToolStripButton control is the empty cell,
   ' indicate that the move operation is valid.
     If item Is Me.emptyCellButton Then
         ' Set the drag operation to indicate a valid move.
         dea.Effect = DragDropEffects.Move
     End If
 End Sub

Комментарии

Событие DragEnter возникает, когда пользователь впервые перетаскивает курсор мыши над элементом во время операции перетаскивания.

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

Метод DoDragDrop определяет элемент в текущем расположении курсора. Затем проверяется, является ли элемент допустимым целевым объектом удаления.

Если элемент является допустимым объектом перетаскивания, GiveFeedback событие вызывается с указанным эффектом перетаскивания. Список эффектов перетаскивания см. в перечислении DragDropEffects.

Изменения положения курсора мыши, состояния клавиатуры и состояния кнопки мыши отслеживаются следующим образом:

  • Если пользователь перемещает указатель мыши за пределы окна, происходит событие DragLeave.

  • Если мышь введет другой элемент, DragEnter для этого элемента управления возникает .

  • Если мышь перемещается, но остается в пределах одного элемента, DragOver возникает событие .

При изменении состояния клавиатуры или кнопки мыши возникает событие, QueryContinueDrag которое определяет, следует ли продолжить перетаскивание, удалить данные или отменить операцию на основе значения Action свойства события QueryContinueDragEventArgs.

Если значение DragAction равно Continue, DragOver событие вызывается для продолжения операции, и GiveFeedback событие вызывается с новым эффектом, чтобы можно было задать соответствующую визуальную обратную связь. Список допустимых эффектов сброса см. в перечислении DragDropEffects.

События DragOver и GiveFeedback связаны таким образом, что при перемещении мыши по целевому объекту перетаскивания пользователю предоставляется наиболее актуальная обратная связь о положении мыши, как показано ниже.

  • Если значение DragAction равно Drop, значение эффекта удаления возвращается в источник, чтобы исходное приложение смогла выполнить соответствующую операцию с исходными данными, например, вырезать данные, если операция была перемещением.

  • Если значение DragAction равно Cancel, DragLeave вызывается событие .

Примечание

Свойства XDragEventArgs и Y объекта находятся в экранных координатах, а не в координатах клиента.

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

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