Procedura: abilitare operazioni di trascinamento con il controllo RichTextBox Windows FormHow to: Enable Drag-and-Drop Operations with the Windows Forms RichTextBox Control

Le operazioni di trascinamento della selezione del controllo RichTextBox di Windows Form vengono eseguite gestendo gli eventi DragEnter e DragDrop .Drag-and-drop operations with the Windows Forms RichTextBox control are done by handling the DragEnter and DragDrop events. Quindi, le operazioni di trascinamento della selezione risultano molto semplici con il controllo RichTextBox .Thus, drag-and-drop operations are extremely simple with the RichTextBox control.

Per abilitare le operazioni di trascinamento in un controllo RichTextBoxTo enable drag operations in a RichTextBox control

  1. Impostare la proprietà AllowDrop del controllo RichTextBox su true.Set the AllowDrop property of the RichTextBox control to true.

  2. Scrivere il codice nel gestore eventi per l'evento DragEnter .Write code in the event handler of the DragEnter event. Usare un'istruzione if per assicurarsi che i dati trascinati siano di un tipo accettabile (in questo caso, testo).Use an if statement to ensure that the data being dragged is of an acceptable type (in this case, text). La proprietà DragEventArgs.Effect può essere impostata su uno qualsiasi dei valori dell'enumerazione DragDropEffects.The DragEventArgs.Effect property can be set to any value of the DragDropEffects enumeration.

    Private Sub RichTextBox1_DragEnter(ByVal sender As Object, _   
       ByVal e As System.Windows.Forms.DragEventArgs) _   
       Handles RichTextBox1.DragEnter  
       If (e.Data.GetDataPresent(DataFormats.Text)) Then  
          e.Effect = DragDropEffects.Copy  
       Else  
          e.Effect = DragDropEffects.None  
       End If  
    End Sub  
    
    private void richTextBox1_DragEnter(object sender,   
    System.Windows.Forms.DragEventArgs e)  
    {  
       if (e.Data.GetDataPresent(DataFormats.Text))   
          e.Effect = DragDropEffects.Copy;  
       else  
          e.Effect = DragDropEffects.None;  
    }  
    
    private:  
       void richTextBox1_DragEnter(System::Object ^  sender,  
          System::Windows::Forms::DragEventArgs ^  e)  
       {  
          if (e->Data->GetDataPresent(DataFormats::Text))  
             e->Effect = DragDropEffects::Copy;  
          else  
             e->Effect = DragDropEffects::None;  
       }  
    

    (Visual c# e Visual C++Visual C++) inserire il codice seguente nel costruttore del form per registrare il gestore dell'evento.(Visual C# and Visual C++Visual C++) Place the following code in the form's constructor to register the event handler.

    this.richTextBox1.DragEnter += new  
        System.Windows.Forms.DragEventHandler  
        (this.richTextBox1_DragEnter);  
    
    this->richTextBox1->DragEnter += gcnew  
       System::Windows::Forms::DragEventHandler  
       (this, &Form1::richTextBox1_DragEnter);  
    
  3. Scrivere codice per gestire l'evento DragDrop .Write code to handle the DragDrop event. Usare il metodo DataObject.GetData per recuperare i dati trascinati.Use the DataObject.GetData method to retrieve the data being dragged.

    Nell'esempio seguente il codice imposta la proprietà Text del controllo RichTextBox uguale ai dati trascinati.In the example below, the code sets the Text property of the RichTextBox control equal to the data being dragged. Se il testo è già presente nel controllo RichTextBox , il testo trascinato viene inserito nel punto di inserimento.If there is already text in the RichTextBox control, the dragged text is inserted at the insertion point.

    Private Sub RichTextBox1_DragDrop(ByVal sender As Object, _   
       ByVal e As System.Windows.Forms.DragEventArgs) _   
       Handles RichTextBox1.DragDrop  
       Dim i As Int16   
       Dim s As String  
    
       ' Get start position to drop the text.  
       i = RichTextBox1.SelectionStart  
       s = RichTextBox1.Text.Substring(i)  
       RichTextBox1.Text = RichTextBox1.Text.Substring(0, i)  
    
       ' Drop the text on to the RichTextBox.  
       RichTextBox1.Text = RichTextBox1.Text + _  
          e.Data.GetData(DataFormats.Text).ToString()  
       RichTextBox1.Text = RichTextBox1.Text + s  
    End Sub  
    
    private void richTextBox1_DragDrop(object sender,   
    System.Windows.Forms.DragEventArgs e)  
    {  
       int i;  
       String s;  
    
       // Get start position to drop the text.  
       i = richTextBox1.SelectionStart;  
       s = richTextBox1.Text.Substring(i);  
       richTextBox1.Text = richTextBox1.Text.Substring(0,i);  
    
       // Drop the text on to the RichTextBox.  
       richTextBox1.Text = richTextBox1.Text +   
          e.Data.GetData(DataFormats.Text).ToString();  
       richTextBox1.Text = richTextBox1.Text + s;  
    }  
    
    private:  
       System::Void richTextBox1_DragDrop(System::Object ^  sender,  
          System::Windows::Forms::DragEventArgs ^  e)  
       {  
          int i;  
          String ^s;  
    
       // Get start position to drop the text.  
       i = richTextBox1->SelectionStart;  
       s = richTextBox1->Text->Substring(i);  
       richTextBox1->Text = richTextBox1->Text->Substring(0,i);  
    
       // Drop the text on to the RichTextBox.  
       String ^str = String::Concat(richTextBox1->Text, e->Data  
       ->GetData(DataFormats->Text)->ToString());   
       richTextBox1->Text = String::Concat(str, s);  
       }  
    

    (Visual c# e Visual C++Visual C++) inserire il codice seguente nel costruttore del form per registrare il gestore dell'evento.(Visual C# and Visual C++Visual C++) Place the following code in the form's constructor to register the event handler.

    this.richTextBox1.DragDrop += new  
        System.Windows.Forms.DragEventHandler  
        (this.richTextBox1_DragDrop);  
    
    this->richTextBox1->DragDrop += gcnew   
       System::Windows::Forms::DragEventHandler  
       (this, &Form1::richTextBox1_DragDrop);  
    

Per testare la funzionalità di trascinamento della selezione nell'applicazioneTo test the drag-and-drop functionality in your application

  1. Salvare e compilare l'applicazione.Save and build your application. Durante l'esecuzione, eseguire WordPad.While it is running, run WordPad.

    WordPad è un editor di testo installato da Windows che consente operazioni di trascinamento della selezione.WordPad is a text editor installed by Windows that allows drag-and-drop operations. È accessibile premendo Start , selezionando Eseguie digitando WordPad nella casella di testo della finestra di dialogo Esegui , quindi facendo clic su OK.It is accessible by clicking the Start button, selecting Run, typing WordPad in the text box of the Run dialog box, and then clicking OK.

  2. Una volta aperto WordPad, digitare una stringa di testo al suo interno.Once WordPad is open, type a string of text in it. Usando il mouse, selezionare il testo e quindi trascinarlo sul controllo RichTextBox nell'applicazione Windows.Using the mouse, select the text, and then drag the selected text over to the RichTextBox control in your Windows application.

    Quando si passa il mouse sul controllo RichTextBox (e, di conseguenza, si genera l'evento DragEnter ), il puntatore del mouse cambia ed è possibile rilasciare il testo selezionato nel controllo RichTextBox .Notice that when you point the mouse at the RichTextBox control (and, consequently, raise the DragEnter event), the mouse pointer changes and you can drop the selected text into the RichTextBox control.

    Quando si rilascia il pulsante del mouse, il testo selezionato viene rilasciato (ossia, viene generato l'evento DragDrop ) e viene inserito all'interno del controllo RichTextBox .When you release the mouse button, the selected text is dropped (that is, the DragDrop event is raised) and is inserted within the RichTextBox control.

Vedere ancheSee Also

RichTextBox
Procedura: Eseguire operazioni di trascinamento e rilascio tra applicazioniHow to: Perform Drag-and-Drop Operations Between Applications
Controllo RichTextBoxRichTextBox Control
Controlli da usare in Windows FormControls to Use on Windows Forms