DragAction Enumerazione

Definizione

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
Ereditarietà
DragAction
Attributi

Campi

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.

Esempi

Nell'esempio seguente viene illustrata un'operazione di trascinamento della ListBox selezione tra due controlli.The following example demonstrates a drag-and-drop operation between two ListBox controls. Nell'esempio viene chiamato DoDragDrop il metodo all'avvio dell'azione di trascinamento.The example calls the DoDragDrop method when the drag action starts. L'azione di trascinamento viene avviata se il SystemInformation.DragSize mouse è stato spostato più di MouseDown dalla posizione del mouse durante l'evento.The drag action starts if the mouse has moved more than SystemInformation.DragSize from the mouse location during the MouseDown event. Il IndexFromPoint metodo viene utilizzato per determinare l'indice dell'elemento da trascinare durante l' MouseDown evento.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 siano presenti due 3dwarro.cur file 3dwno.curdi cursore, e, nella directory dell'applicazione, rispettivamente per i cursori di trascinamento e di rilascio 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. Se l'oggetto UseCustomCursorsCheck CheckBox è selezionato, verranno utilizzati i cursori personalizzati.The custom cursors will be used if the UseCustomCursorsCheckCheckBox is checked. I cursori personalizzati vengono impostati nel GiveFeedback gestore eventi.The custom cursors are set in the GiveFeedback event handler.

Lo stato della tastiera viene valutato nel DragOver gestore eventi a destra ListBox, per determinare l'operazione di trascinamento in base allo 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. Anche la posizione nell' ListBox oggetto in cui si verificherà l'eliminazione viene determinata DragOver durante l'evento.The location in the ListBox where the drop would occur is also determined during the DragOver event. Se i dati da eliminare non Stringsono, l'oggetto DragEventArgs.Effect è 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 in DropLocationLabel. LabelFinally, the status of the drop is displayed in the DropLocationLabelLabel.

I dati da eliminare per il diritto ListBox vengono determinati DragDrop nel gestore eventi e il String valore ListBoxviene aggiunto nella posizione appropriata in.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 QueryContinueDrag viene annullata nel gestore eventi.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' DragAction uso dell'enumerazione.This code excerpt demonstrates using the DragAction enumeration. Vedere il DoDragDrop metodo 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

Commenti

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

Si applica a