Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe DragEventArgs

 

Data di pubblicazione: ottobre 2016

Fornisce dati per il 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

NomeDescrizione
System_CAPS_pubmethodDragEventArgs(IDataObject, Int32, Int32, Int32, DragDropEffects, DragDropEffects)

Inizializza una nuova istanza della classe DragEventArgs.

NomeDescrizione
System_CAPS_pubpropertyAllowedEffect

Ottiene le operazioni di trascinamento e rilascio consentite dall'elemento usato per generare l'evento di trascinamento.

System_CAPS_pubpropertyData

Ottiene il IDataObject che contiene i dati associati all'evento.

System_CAPS_pubpropertyEffect

Ottiene o imposta l'effetto di rilascio di destinazione in un'operazione di trascinamento.

System_CAPS_pubpropertyKeyState

Ottiene lo stato corrente dei tasti MAIUSC, CTRL e ALT, nonché lo stato dei pulsanti del mouse.

System_CAPS_pubpropertyX

Ottiene la coordinata x del puntatore del mouse espressa in coordinate dello schermo.

System_CAPS_pubpropertyY

Ottiene la coordinata y del puntatore del mouse espressa in coordinate dello schermo.

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_protmethodFinalize()

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.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

Il DragDrop evento si verifica quando l'utente completa un'operazione di trascinamento e rilascio trascinando un oggetto sul controllo e quindi rilasciandola rilasciando il pulsante del mouse sul controllo. Il DragEnter evento si verifica quando l'utente sposta il puntatore del mouse sul controllo mentre si trascina un oggetto con il mouse. Il DragOver evento si verifica quando l'utente sposta il puntatore del mouse sul controllo mentre si trascina un oggetto con il mouse.

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

Per informazioni sul modello di eventi, vedere Gestione e generazione di eventi.

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

Nell'esempio viene inoltre illustrato l'utilizzo di cursori personalizzati per l'operazione di trascinamento e rilascio. Nell'esempio si presuppone che due file di cursore, 3dwarro.cur e 3dwno.cur, esiste nella directory dell'applicazione, per il trascinamento personalizzato e non trascinamento, rispettivamente. I cursori personalizzati da utilizzare se il UseCustomCursorsCheckCheckBox sia selezionata. I cursori personalizzati vengono impostati nel GiveFeedback gestore dell'evento.

Lo stato della tastiera viene valutato nel DragOver gestore eventi per il diritto ListBox, per determinare se l'operazione di trascinamento verrà basata sullo stato dei tasti MAIUSC, CTRL, ALT o CTRL + ALT. Il percorso nel ListBox in cui si verificherà il rilascio è determinato durante il DragOver evento. Se i dati da eliminare non sono un String, il DragEventArgs.Effect è impostato su DragDropEffects.None. Infine, viene visualizzato lo stato del trascinamento nel DropLocationLabelLabel.

I dati da eliminare per il diritto ListBox viene determinato nel DragDrop gestore dell'evento e il String valore viene aggiunto nella posizione appropriata all'interno di ListBox. Se l'operazione di trascinamento viene spostato all'esterno dei limiti del form, quindi viene annullato l'operazione di trascinamento e rilascio nel QueryContinueDrag gestore dell'evento.

Questo estratto di codice viene illustrato come utilizzare la DragEventArgs classe. Vedere il 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 destinazione di un'operazione di trascinamento e rilascio. In questo esempio, un ListBox controllo rappresenta l'origine dei dati e RichTextBox controllo è la destinazione. Nell'esempio si presuppone che il ListBox controllo sia stato compilato con un elenco di nomi di file validi. Quando l'utente trascina uno dei nomi di file visualizzati dal ListBox controllo il RichTextBox controllo, il file indicato nel nome file viene aperto.

Viene avviata l'operazione di ListBox evento MouseDown del controllo. Nel DragEnter gestore eventi, nell'esempio viene utilizzata la GetDataPresent metodo per verificare che i dati in un formato che il RichTextBox controllo consente di visualizzare e quindi imposta la DragDropEffects proprietà per specificare che i dati devono essere copiati dal controllo di origine per il controllo di destinazione. Infine, il RichTextBox gestore di eventi DragDrop del controllo utilizza il GetData per recuperare il nome del file per 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
Disponibile da 1.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: