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 值。

另请参阅