DragAction Enum

Definition

Specifica se e in che modo un'operazione di trascinamento dovrebbe continuare.Specifies how and if a drag-and-drop operation should continue.

public enum class DragAction
[System.Runtime.InteropServices.ComVisible(true)]
public enum DragAction
type DragAction = 
Public Enum DragAction
Inheritance
DragAction
Attributes

Fields

Cancel 2

L'operazione viene annullata senza alcun messaggio di trascinamento.The operation is canceled with no drop message.

Continue 0

L'operazione continua.The operation will continue.

Drop 1

L'operazione sarà interrotta con un'azione di trascinamento.The operation will stop with a drop.

Examples

Nell'esempio seguente viene illustrata un'operazione di trascinamento della selezione tra due controlli ListBox.The following example demonstrates a drag-and-drop operation between two ListBox controls. Nell'esempio viene chiamato il metodo DoDragDrop quando viene avviata l'azione di trascinamento.The example calls the DoDragDrop method when the drag action starts. L'azione di trascinamento viene avviata se il mouse è stato spostato oltre SystemInformation.DragSize dalla posizione del mouse durante l'evento di MouseDown.The drag action starts if the mouse has moved more than SystemInformation.DragSize from the mouse location during the MouseDown event. Il metodo IndexFromPoint viene usato per determinare l'indice dell'elemento da trascinare durante l'evento di MouseDown.The IndexFromPoint method is used to determine the index of the item to drag during the MouseDown event.

Nell'esempio viene inoltre illustrato l'utilizzo di cursori personalizzati per l'operazione di trascinamento della selezione.The example also demonstrates using custom cursors for the drag-and-drop operation. Nell'esempio si presuppone che esistano due file di cursore, 3dwarro.cur e 3dwno.cur, nella directory dell'applicazione, rispettivamente per i cursori di trascinamento personalizzati.The example assumes that two cursor files, 3dwarro.cur and 3dwno.cur, exist in the application directory, for the custom drag and no-drop cursors, respectively. I cursori personalizzati verranno utilizzati se il CheckBox UseCustomCursorsCheckè selezionato.The custom cursors will be used if the UseCustomCursorsCheckCheckBox is checked. I cursori personalizzati vengono impostati nel gestore dell'evento GiveFeedback.The custom cursors are set in the GiveFeedback event handler.

Lo stato della tastiera viene valutato nel gestore dell'evento DragOver per il ListBoxdestro, per determinare quale operazione di trascinamento sarà basata sullo stato dei tasti MAIUSC, CTRL, ALT o CTRL + ALT.The keyboard state is evaluated in the DragOver event handler for the right ListBox, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. La posizione nella ListBox in cui si verificherà l'eliminazione viene inoltre determinata durante l'evento di DragOver.The location in the ListBox where the drop would occur is also determined during the DragOver event. Se i dati da eliminare non sono String, il DragEventArgs.Effect viene impostato su DragDropEffects.None.If the data to drop is not a String, then the DragEventArgs.Effect is set to DragDropEffects.None. Infine, lo stato del trascinamento viene visualizzato nella DropLocationLabelLabel.Finally, the status of the drop is displayed in the DropLocationLabelLabel.

I dati da eliminare per il ListBox destro vengono determinati nel gestore dell'evento DragDrop e il valore String viene aggiunto nella posizione appropriata nel ListBox.The data to drop for the right ListBox is determined in the DragDrop event handler and the String value is added at the appropriate place in the ListBox. Se l'operazione di trascinamento viene spostata all'esterno dei limiti del form, l'operazione di trascinamento della selezione viene annullata nel gestore dell'evento QueryContinueDrag.If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the QueryContinueDrag event handler.

Questo estratto di codice illustra l'uso dell'enumerazione DragAction.This code excerpt demonstrates using the DragAction enumeration. Vedere il metodo DoDragDrop per l'esempio di codice completo.See the DoDragDrop method for the complete code example.

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, System.Windows.Forms.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, System.Windows.Forms.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

Remarks

Questa enumerazione viene utilizzata da QueryContinueDragEventArgs.This enumeration is used by QueryContinueDragEventArgs.

Applies to