Windows 窗体中的拖放功能

Windows 窗体包含一组实现拖放行为的方法、事件和类。 本主题概述了 Windows 窗体对拖放功能的支持。 另请参阅拖放操作和剪贴板支持

执行拖放操作

若要执行拖放操作,请使用 Control 类的 DoDragDrop 方法。 有关如何执行拖放操作的详细信息,请参阅 DoDragDrop。 若要获取拖放操作开始前鼠标指针必须拖动到的矩形,请使用 SystemInformation 类的 DragSize 属性。

拖放操作中有两类事件:一类是拖放操作的当前目标上发生的事件,一类是拖放操作的源上发生的事件。

当前目标上的事件

下表显示在拖放操作的当前目标上发生的事件。

鼠标事件 说明
DragEnter 将对象拖入控件的边界时此事件发生。 此事件的处理程序接收类型为 DragEventArgs 的参数。
DragOver 在鼠标指针位于控件的边界内时如果拖动对象则此事件发生。 此事件的处理程序接收类型为 DragEventArgs 的参数。
DragDrop 拖放操作完成时此事件发生。 此事件的处理程序接收类型为 DragEventArgs 的参数。
DragLeave 将对象拖出控件的边界时此事件发生。 此事件的处理程序接收类型为 EventArgs 的参数。

DragEventArgs 类提供鼠标指针的位置、鼠标按钮和键盘修改键的当前状态、正在拖动的数据以及 DragDropEffects 值(指定拖动事件的源所允许的操作以及操作的目标放置效果)。

源上的事件

下表显示在拖放操作的源上发生的事件。

鼠标事件 说明
GiveFeedback 此事件在执行拖动操作期间发生。 借助此事件,可向用户提供可视提示(例如更改鼠标指针),通知拖放操作正在发生。 此事件的处理程序接收类型为 GiveFeedbackEventArgs 的参数。
QueryContinueDrag 此事件在拖放操作期间引发,并使拖动源可以确定是否应取消拖放操作。 此事件的处理程序接收类型为 QueryContinueDragEventArgs 的参数。

QueryContinueDragEventArgs 类提供鼠标按钮和键盘修改键的当前状态、指定是否按 ESC 键的值以及 DragAction 值(可设置为指定是否应继续拖放操作)。

另请参阅