DragAction 枚举 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定拖放操作是否应继续。
public enum class DragAction[System.Runtime.InteropServices.ComVisible(true)]
public enum DragActionpublic enum DragAction[<System.Runtime.InteropServices.ComVisible(true)>]
type DragAction = type DragAction = Public Enum DragAction- 继承
- 属性
字段
| 名称 | 值 | 说明 | 
|---|---|---|
| Cancel | 2 | 取消该操作,且没有删除消息。 | 
| Continue | 0 | 该操作将继续执行。 | 
| Drop | 1 | 操作将停止并删除。 | 
示例
以下示例演示两个 ListBox 控件之间的拖放操作。 该示例在拖动操作启动时调用 DoDragDrop 方法。 如果鼠标在 MouseDown 事件期间从鼠标位置移动了超过 SystemInformation.DragSize,则拖动操作将启动。 
              IndexFromPoint 方法用于确定在 MouseDown 事件期间要拖动的项的索引。
该示例还演示如何对拖放操作使用自定义游标。 该示例假定两个游标文件(3dwarro.cur 和 3dwno.cur)分别存在于应用程序目录中,分别用于自定义拖放游标。 如果选中 UseCustomCursorsCheckCheckBox,将使用自定义游标。 自定义游标在 GiveFeedback 事件处理程序中设置。
键盘状态在右侧 ListBox的 DragOver 事件处理程序中进行评估,以确定拖动操作将基于 SHIFT、Ctrl、Alt 或 Ctrl+Alt 键的状态。 在 DragOver 事件期间,也会确定 ListBox 发生放置的位置。 如果要删除的数据不是 String,则 DragEventArgs.Effect 设置为 DragDropEffects.None。 最后,删除状态显示在 DropLocationLabelLabel中。
要删除的右 ListBox 的数据在 DragDrop 事件处理程序中确定,并在 ListBox的适当位置添加 String 值。 如果拖动操作在窗体边界之外移动,则拖放操作在 QueryContinueDrag 事件处理程序中取消。
此代码摘录演示了如何使用 DragAction 枚举。 有关完整的代码示例,请参阅 DoDragDrop 方法。
void ListDragSource_QueryContinueDrag( Object^ sender, System::Windows::Forms::QueryContinueDragEventArgs^ e )
{
   // Cancel the drag if the mouse moves off the form.
   ListBox^ lb = dynamic_cast<ListBox^>(sender);
   if ( lb != nullptr )
   {
      Form^ f = lb->FindForm();
      // Cancel the drag if the mouse moves off the form. The screenOffset
      // takes into account any desktop bands that may be at the top or left
      // side of the screen.
      if ( ((Control::MousePosition.X - screenOffset.X) < f->DesktopBounds.Left) || ((Control::MousePosition.X - screenOffset.X) > f->DesktopBounds.Right) || ((Control::MousePosition.Y - screenOffset.Y) < f->DesktopBounds.Top) || ((Control::MousePosition.Y - screenOffset.Y) > f->DesktopBounds.Bottom) )
      {
         e->Action = DragAction::Cancel;
      }
   }
}
private void ListDragSource_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
{
    // Cancel the drag if the mouse moves off the form.
    ListBox lb = sender as ListBox;
    if (lb != null)
    {
        Form f = lb.FindForm();
        // Cancel the drag if the mouse moves off the form. The screenOffset
        // takes into account any desktop bands that may be at the top or left
        // side of the screen.
        if (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) ||
            ((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) ||
            ((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) ||
            ((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom))
        {
            e.Action = DragAction.Cancel;
        }
    }
}
Private Sub ListDragSource_QueryContinueDrag(ByVal sender As Object, ByVal e As QueryContinueDragEventArgs) Handles ListDragSource.QueryContinueDrag
    ' Cancel the drag if the mouse moves off the form.
    Dim lb As ListBox = CType(sender, ListBox)
    If (lb IsNot Nothing) Then
        Dim f As Form = lb.FindForm()
        ' Cancel the drag if the mouse moves off the form. The screenOffset
        ' takes into account any desktop bands that may be at the top or left
        ' side of the screen.
        If (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) Or
            ((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) Or
            ((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) Or
            ((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) Then
            e.Action = DragAction.Cancel
        End If
    End If
End Sub
注解
此枚举由 QueryContinueDragEventArgs使用。