Leggere in inglese

Condividi tramite


DragDropEffects Enumerazione

Definizione

Specifica i possibili effetti di un'operazione di trascinamento.

Questa enumerazione supporta una combinazione bit per bit dei rispettivi valori dei membri.

C#
[System.Flags]
public enum DragDropEffects
Ereditarietà
DragDropEffects
Attributi

Campi

All -2147483645

Combinazione degli effetti di Copy, Move e Scroll.

Copy 1

I dati dell'origine di trascinamento vengono copiati nella destinazione.

4

I dati dell'origine di trascinamento vengono collegati alla destinazione di trascinamento.

Move 2

I dati dell'origine di trascinamento vengono spostati nella destinazione di trascinamento.

None 0

I dati non vengono accettati dalla destinazione di trascinamento.

Scroll -2147483648

È possibile scorrere la destinazione durante il trascinamento per individuare una posizione di rilascio non visibile.

Esempio

Nell'esempio seguente viene illustrato l'utilizzo dell'enumerazione DragDropEffects quando l'utente sposta il mouse sulla destinazione di rilascio durante un'operazione di trascinamento della selezione. Questo esempio fa parte di un esempio più ampio fornito per il Control.DoDragDrop metodo .

C#
private void ListDragTarget_DragOver(object sender, DragEventArgs e)
{
    // Determine whether string data exists in the drop data. If not, then
    // the drop effect reflects that the drop cannot occur.
    if (!e.Data.GetDataPresent(typeof(System.String)))
    {
        e.Effect = DragDropEffects.None;
        DropLocationLabel.Text = "None - no string data.";
        return;
    }

    // Set the effect based upon the KeyState.
    if ((e.KeyState & (8 + 32)) == (8 + 32) &&
        (e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link)
    {
        // KeyState 8 + 32 = CTRL + ALT

        // Link drag-and-drop effect.
        e.Effect = DragDropEffects.Link;
    }
    else if ((e.KeyState & 32) == 32 &&
        (e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link)
    {
        // ALT KeyState for link.
        e.Effect = DragDropEffects.Link;
    }
    else if ((e.KeyState & 4) == 4 &&
        (e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)
    {
        // SHIFT KeyState for move.
        e.Effect = DragDropEffects.Move;
    }
    else if ((e.KeyState & 8) == 8 &&
        (e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy)
    {
        // CTRL KeyState for copy.
        e.Effect = DragDropEffects.Copy;
    }
    else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)
    {
        // By default, the drop action should be move, if allowed.
        e.Effect = DragDropEffects.Move;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }

    // Get the index of the item the mouse is below. 

    // The mouse locations are relative to the screen, so they must be 
    // converted to client coordinates.

    indexOfItemUnderMouseToDrop =
        ListDragTarget.IndexFromPoint(ListDragTarget.PointToClient(new Point(e.X, e.Y)));

    // Updates the label text.
    if (indexOfItemUnderMouseToDrop != ListBox.NoMatches)
    {
        DropLocationLabel.Text = "Drops before item #" + (indexOfItemUnderMouseToDrop + 1);
    }
    else
    {
        DropLocationLabel.Text = "Drops at the end.";
    }
}

Commenti

Questa enumerazione viene utilizzata dalle DragEventArgsclassi , GiveFeedbackEventArgse Control .

È possibile usare DragDropEffects per visualizzare puntatori del mouse diversi per le operazioni di trascinamento della selezione. Ad esempio, è possibile visualizzare un simbolo più per un'operazione Copy di trascinamento della selezione, un simbolo di freccia per un'operazione Move di trascinamento della selezione o un cerchio rosso con una linea attraverso di esso per un'operazione None di trascinamento della selezione.

Se si desidera eliminare i dati in una posizione nella destinazione attualmente non visibile, è possibile scorrere la destinazione durante il trascinamento. Se una destinazione non supporta lo scorrimento, è necessario assicurarsi che la posizione di rilascio sia visibile nella destinazione prima di iniziare l'operazione di trascinamento della selezione. Di seguito sono riportati alcuni scenari in cui è possibile scorrere una destinazione:

  • Si trascina il testo in un documento e si vuole eliminare il testo in una posizione non visibile nella finestra del documento.

  • Si trascina un file in un albero di file e si vuole eliminare il file in un nodo non visibile nell'albero dei file.

Si applica a

Prodotto Versioni
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7

Vedi anche