通过


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 该方法。 如果鼠标在事件发生期间MouseDown已从鼠标位置移动超过SystemInformation.DragSize鼠标位置,则拖动操作将开始。 该方法 IndexFromPoint 用于确定在事件期间 MouseDown 要拖动的项的索引。

该示例还演示如何对拖放操作使用自定义游标。 该示例要求在应用程序目录中分别存在两个游标文件 3dwarro.cur3dwno.cur以及自定义拖放游标。 如果选中自定义游标, UseCustomCursorsCheckCheckBox 将使用自定义游标。 自定义游标在事件处理程序中 GiveFeedback 设置。

键盘状态在右侧ListBox的事件处理程序中DragOver计算,以确定拖动操作将基于 Shift、Ctrl、Alt 或 Ctrl+Alt 键的状态。 在事件发生期间DragOver也会确定放置位置ListBox。 如果要删除的数据不是一个 String,则 DragEventArgs.Effect 设置为 None in DragDropEffects。 最后,下拉列表的状态显示在 DropLocationLabelLabel.

要为右侧 ListBox 删除的数据在事件处理程序中 DragDrop 确定,并在 String 相应的位置 ListBox添加值。 如果拖动操作在窗体的边界外移动,则会在 QueryContinueDrag 事件处理程序中取消拖放操作。

此代码摘录演示了如何使用事件 DragEnterDoDragDrop请参阅完整的代码示例的方法。

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当用户在拖放操作期间首次将鼠标光标拖动到控件上时,将引发该事件。

以下信息介绍了如何以及何时引发与拖放操作相关的事件。

该方法 DoDragDrop 确定当前游标位置下的控件。 然后检查控件是否为有效的删除目标。

如果控件是有效的放置目标,则会 GiveFeedback 使用指定的拖放效果引发该事件。 有关拖放效果的列表,请参阅 DragDropEffects 枚举。

跟踪鼠标光标位置、键盘状态和鼠标按钮状态的更改。

  • 如果用户移出窗口,则会 DragLeave 引发该事件。

  • 如果鼠标进入另一个控件,则会 DragEnter 引发该控件。

  • 如果鼠标移动但保留在同一控件中,则会 DragOver 引发该事件。

如果键盘或鼠标按钮状态发生更改, QueryContinueDrag 则会引发该事件,并确定是继续拖动、删除数据,还是根据 Action 事件的 QueryContinueDragEventArgs属性值取消操作。

  • 如果值为 DragActionContinue1,则会 DragOver 引发该事件以继续操作,并使用 GiveFeedback 新效果引发该事件,以便可以设置适当的视觉反馈。 有关有效删除效果的列表,请参阅 DragDropEffects 枚举。

    注意

    配对 DragOverGiveFeedback 事件,以便在鼠标在放置目标之间移动时,系统会向用户提供鼠标位置的 up-to日期反馈。

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

  • 如果值为 <a0/a0>,则会引发该事件。

    注意

    YX属性DragEventArgs位于屏幕坐标中,而不是客户端坐标。 以下 Visual C# 代码行将属性转换为客户端 Point

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

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

适用于

另请参阅