Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe DragEventArgs

fornisce i dati per DragDrop, DragEnter, o DragOver evento.

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

[ComVisibleAttribute(true)]
public class DragEventArgs : EventArgs

Il tipo DragEventArgs espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoDragEventArgsInizializza una nuova istanza di DragEventArgs classe.
In alto

  NomeDescrizione
Proprietà pubblicaAllowedEffectOttiene le operazioni di trascinamento della selezione sono consentite dal creatore (o dal database di origine) l'evento di trascinamento.
Proprietà pubblicaDataottiene IDataObject contenente i dati associati a questo evento.
Proprietà pubblicaEffectOttiene o imposta l'effetto del rilascio di destinazione in un'operazione di trascinamento della selezione.
Proprietà pubblicaKeyStateOttiene lo stato corrente di MAIUSC, CTRL e tasto ALT e lo stato dei pulsanti.
Proprietà pubblicaXOttiene la coordinata x del puntatore del mouse, tramite coordinate dello schermo.
Proprietà pubblicaYOttiene la coordinata y del puntatore del mouse, tramite coordinate dello schermo.
In alto

  NomeDescrizione
Metodo pubblicoEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo protettoMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto

DragDrop l'evento si verifica quando l'utente termina un'operazione di trascinamento della selezione trascinando un oggetto sopra il controllo e rilasciandola sul controllo rilasciato il pulsante del mouse. DragEnter l'evento si verifica quando l'utente sposta il puntatore del mouse sul controllo tenendo presente un oggetto con il mouse. DragOver l'evento si verifica quando l'utente sposta il puntatore del mouse sul controllo tenendo presente un oggetto con il mouse.

In DragEventArgs l'oggetto specifica tutti i dati associati a questo evento; lo stato corrente del tasto MAIUSC, CTRL e i tasti ALT, la posizione del puntatore del mouse; e gli effetti di trascinamento consentiti dall'origine e dalla destinazione dell'evento del trascinamento.

Per informazioni sul modello eventi, vedere Eventi e delegati.

Nell'esempio seguente viene illustrata un'operazione di trascinamento tra due ListBox controlli. Nell'esempio viene chiamato DoDragDrop metodo quando l'operazione di trascinamento avvia. L'azione di trascinamento avvia se il mouse viene spostato più di SystemInformation.DragSize la posizione del mouse durante MouseDown evento. IndexFromPoint il metodo viene utilizzato per determinare l'indice dell'elemento per trascinare durante MouseDown evento.

Viene inoltre illustrato l'utilizzo dei cursori personalizzati per l'operazione di trascinamento della selezione. L'esempio presuppone che due file cursore, 3dwarro.cur e 3dwno.cur, esistere nella directory dell'applicazione, per il trascinamento e i cursori di non trascinamento personalizzati, rispettivamente. I cursori personalizzati verranno utilizzati se UseCustomCursorsCheckCheckBox viene controllato. i cursori personalizzati sono impostati in GiveFeedback gestore eventi.

Lo stato della tastiera viene valutato in DragOver gestore eventi per la destra ListBox, per determinare l'operazione di trascinamento verrà basata sullo stato dei tasti MAIUSC, CTRL di, ALT, o di CTRL+ALT. la posizione in ListBox dove il trascinamento si verificherà viene determinato durante DragOver evento. Se i dati da effettuare operazioni di trascinamento non a String, quindi DragEventArgs.Effect è impostato su DragDropEffects.None. Infine, lo stato del trascinamento vengono visualizzati in DropLocationLabelLabel.

I dati da rilasciarlo per la destra ListBox viene determinato in DragDrop gestore eventi e String il valore viene aggiunto al posto appropriato in ListBox. Se l'operazione di trascinamento si sposta oltre i limiti del form, l'operazione di trascinamento della selezione viene annullata in QueryContinueDrag gestore eventi.

Questo porzione di codice viene illustrato l'utilizzo di DragEventArgs classe. vedere DoDragDrop metodo per l'esempio di codice completo.


private void ListDragTarget_DragOver(object sender, System.Windows.Forms.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 = CTL + 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) {

        // CTL 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.";

}


Nell'esempio seguente viene illustrato come DragEventArgs vengono passati tra l'origine e la destinazione dell'operazione di trascinamento. in questo esempio, a ListBox il controllo è l'origine dei dati e RichTextBox il controllo rappresenta il database di destinazione. l'esempio presuppone che ListBox il controllo è stato compilato con un elenco di nomi file validi. Quando l'utente trascina uno dei nomi file dal controllo ListBox controllare in RichTextBox controllare, il file a cui viene fatto riferimento nel nome file è aperto.

L'operazione viene avviata in ListBox evento di MouseDown del controllo. in DragEnter il gestore eventi, vengono utilizzati GetDataPresent metodo per verificare che i dati siano in un formato che RichTextBox il controllo consente di visualizzare quindi imposta DragDropEffects proprietà per specificare che i dati devono essere copiati dal controllo del codice sorgente nel controllo di destinazione. Infine, RichTextBox il gestore eventi del DragDrop del controllo utilizza GetData metodo per recuperare il nome file da aprire.


private void Form1_Load(object sender, EventArgs e) 
{
   // Sets the AllowDrop property so that data can be dragged onto the control.
   richTextBox1.AllowDrop = true;

   // Add code here to populate the ListBox1 with paths to text files.

}

private void listBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
   // Determines which item was selected.
   ListBox lb =( (ListBox)sender);
   Point pt = new Point(e.X,e.Y);
   int index = lb.IndexFromPoint(pt);

   // Starts a drag-and-drop operation with that item.
   if(index>=0) 
   {
      lb.DoDragDrop(lb.Items[index].ToString(), DragDropEffects.Link);
   }
}

private void richTextBox1_DragEnter(object sender, DragEventArgs e) 
{
   // If the data is text, copy the data to the RichTextBox control.
   if(e.Data.GetDataPresent("Text"))
      e.Effect = DragDropEffects.Copy;
}

private void richTextBox1_DragDrop(object sender, DragEventArgs e) 
{
   // Loads the file into the control. 
   richTextBox1.LoadFile((String)e.Data.GetData("Text"), System.Windows.Forms.RichTextBoxStreamType.RichText);
}



.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro pubblico static (Shared in Visual Basic) di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft