ToolStripItem.DragEnter Событие

Определение

Происходит, когда пользователь перетаскивает элемент в клиентскую область данного элемента.Occurs when the user drags an item into the client area of this item.

public:
 event System::Windows::Forms::DragEventHandler ^ DragEnter;
[System.ComponentModel.Browsable(false)]
public event System.Windows.Forms.DragEventHandler DragEnter;
member this.DragEnter : System.Windows.Forms.DragEventHandler 
Public Custom Event DragEnter As DragEventHandler 
Атрибуты

Примеры

В следующем примере кода показано, как преобразовать свойства X и Y в Pointклиента.The following code example shows how to convert the X and Y properties to a client Point. Этот пример кода является частью большого примера, приведенного для класса ToolStripRenderer.This code example is part of a larger example provided for the ToolStripRenderer class.

// 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 возникает, когда пользователь сначала перетаскивает курсор мыши над элементом во время операции перетаскивания.The DragEnter event is raised when the user first drags the mouse cursor over the item during a drag-and-drop operation.

В следующих комментариях описывается, как и когда вызываются события, связанные с операциями перетаскивания.The following remarks describe how and when events related to drag-and-drop operations are raised.

Метод DoDragDrop определяет элемент в текущем положении курсора.The DoDragDrop method determines the item under the current cursor location. Затем он проверяет, является ли элемент допустимым целевым объектом перетаскивания.It then checks to see if the item is a valid drop target.

Если элемент является допустимым целевым объектом перетаскивания, то событие GiveFeedback вызывается с указанным действием перетаскивания.If the item is a valid drop target, the GiveFeedback event is raised with the drag-and-drop effect specified. Список эффектов перетаскивания см. в перечислении DragDropEffects.For a list of drag-and-drop effects, see the DragDropEffects enumeration.

Изменения в положении курсора мыши, состояния клавиатуры и кнопки мыши отправляются следующим образом:Changes in the mouse cursor position, keyboard state, and mouse button state are tracked in the following manner:

  • Если пользователь перемещает указатель мыши за пределы окна, происходит событие DragLeave.If the user moves out of a window, the DragLeave event is raised.

  • Если курсор мыши входит в другой элемент, вызывается DragEnter для этого элемента управления.If the mouse enters another item, the DragEnter for that control is raised.

  • Если мышь перемещается, но остается в пределах одного элемента, возникает событие DragOver.If the mouse moves but stays within the same item, the DragOver event is raised.

При изменении состояния клавиатуры или кнопки мыши возникает событие QueryContinueDrag и определяет, следует ли продолжить перетаскивание, удалить данные или отменить операцию, исходя из значения свойства Action QueryContinueDragEventArgsсобытия.If there is a change in the keyboard or mouse button state, the QueryContinueDrag event is raised and determines whether to continue the drag, to drop the data, or to cancel the operation based on the value of the Action property of the event's QueryContinueDragEventArgs.

Если значение DragAction равно Continue, то событие DragOver вызывается для продолжения операции, а событие GiveFeedback вызывается с новым действием, чтобы можно было установить соответствующую визуальную обратную связь.If the value of DragAction is Continue, the DragOver event is raised to continue the operation and the GiveFeedback event is raised with the new effect so appropriate visual feedback can be set. Список допустимых эффектов сброса см. в перечислении DragDropEffects.For a list of valid drop effects, see the DragDropEffects enumeration.

События DragOver и GiveFeedback сопряжены таким образом, что при перемещении мыши по направлению перетаскивания пользователь получает наиболее актуальную информацию о положении мыши, как показано ниже.The DragOver and GiveFeedback events are paired so that as the mouse moves across the drop target, the user is given the most up-to-date feedback on the mouse's position, as follows:

  • Если значение DragAction равно Drop, то значение результата перетаскивания возвращается в источник, поэтому исходное приложение может выполнить соответствующую операцию с исходными данными. Например, если операция была перемещена, вырежьте данные.If the value of DragAction is Drop, the drop effect value is returned to the source, so the source application can perform the appropriate operation on the source data; for example, cut the data if the operation was a move.

  • Если значение DragAction равно Cancel, возникает событие DragLeave.If the value of DragAction is Cancel, the DragLeave event is raised.

Примечание

Свойства X и Y DragEventArgs находятся в экранных координатах, а не на клиентских координатах.The X and Y properties of the DragEventArgs are in screen coordinates, not client coordinates.

Дополнительные сведения об обработке событий см. в разделе обработка и вызов событий.For more information about handling events, see Handling and Raising Events.

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