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 

事件类型

属性

示例

下面的代码示例演示如何将 和 Y 属性转换为X客户端 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引发 事件,并根据事件的 QueryContinueDragEventArgs属性的值Action确定是继续拖动、删除数据还是取消操作。

如果 的DragActionContinue值为 ,则会DragOver引发事件以继续操作,并使用GiveFeedback新效果引发事件,因此可以设置适当的视觉反馈。 有关有效放置效果的列表,请参见 DragDropEffects 枚举。

DragOverGiveFeedback 事件是配对的,以便当鼠标在放置目标上移动时,用户将获得有关鼠标位置的最新反馈,如下所示:

  • 如果 的DragActionDrop值为 ,则删除效果值将返回到源,因此源应用程序可以对源数据执行适当的操作;例如,如果操作是移动,则剪切数据。

  • 如果 的DragActionCancel值为 ,则DragLeave引发 事件。

注意

XDragEventArgsY 属性位于屏幕坐标中,而不是客户端坐标。

有关处理事件的详细信息,请参阅 处理和引发事件

适用于