Condividi tramite


Procedura: attivare operazioni di trascinamento con il controllo RichTextBox Windows Form

Aggiornamento: novembre 2007

Le operazioni di trascinamento con il controllo RichTextBox Windows Form vengono eseguite gestendo gli eventi DragEnter e DragDrop. Risultano pertanto estremamente semplici con il controllo RichTextBox.

Per attivare le operazioni di trascinamento in un controllo RichTextBox

  1. Impostare la proprietà AllowDrop del controllo RichTextBox su true.

  2. Scrivere il codice nel gestore eventi dell'evento DragEnter. Utilizzare un'istruzione if per garantire che i dati trascinati siano di tipo accettabile, in questo caso, testo. La proprietà DragEventArgs.Effect può essere impostata su qualsiasi valore dell'enumerazione DragDropEffects.

    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(Object sender,
    System.Windows.Forms.DragEventArgs e)
    {
       if (e.get_Data().GetDataPresent(DataFormats.Text))
          e.set_Effect(DragDropEffects.Copy);
       else
          e.set_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#, Visual J# e Visual C++) Inserire il codice seguente nel costruttore del form per registrare il gestore eventi.

    this.richTextBox1.DragEnter += new
        System.Windows.Forms.DragEventHandler
        (this.richTextBox1_DragEnter);
    
    this.richTextBox1.add_DragEnter(new
       System.Windows.Forms.DragEventHandler(
          this.richTextBox1_DragEnter));
    
    this->richTextBox1->DragEnter += gcnew
       System::Windows::Forms::DragEventHandler
       (this, &Form1::richTextBox1_DragEnter);
    
  3. Scrivere il codice per gestire l'evento DragDrop. Utilizzare il metodo DataObject.GetData per recuperare i dati trascinati.

    Nell'esempio di codice che segue la proprietà Text del controllo RichTextBox viene impostata su un valore equivalente ai dati trascinati. Se il controllo RichTextBox contiene già del testo, il testo trascinato verrà inserito nel punto di inserimento.

    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 void richTextBox1_DragDrop(Object sender,
    System.Windows.Forms.DragEventArgs e)
    {
       int i;
       String s;
    
       // Get start position to drop the text.
       i = richTextBox1.get_SelectionStart();
       s = richTextBox1.get_Text().Substring(i);
       richTextBox1.set_Text(richTextBox1.get_Text().Substring(0, i));
    
       // Drop the text on to the RichTextBox.
       richTextBox1.set_Text(richTextBox1.get_Text() +
          e.get_Data().GetData(DataFormats.Text).ToString());
       richTextBox1.set_Text(richTextBox1.get_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#, Visual J# e Visual C++) Inserire il codice seguente nel costruttore del form per registrare il gestore eventi.

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

Per eseguire il test della funzionalità di trascinamento nell'applicazione

  1. Salvare e generare l'applicazione. Mentre l'applicazione è in esecuzione, aprire WordPad.

    WordPad è un editor di testo installato da Windows che consente di eseguire le operazioni di trascinamento. Per accedere a WordPad, fare clic sul pulsante Start, scegliere Esegui, digitare WordPad nella casella di testo della finestra di dialogo Esegui e scegliere OK.

  2. Una volta aperto WordPad, digitare una stringa di testo. Selezionare con il mouse il testo immesso, quindi trascinarlo sul controllo RichTextBox dell'applicazione per Windows.

    Quando si sposta il mouse sopra il controllo RichTextBox e, di conseguenza, si genera l'evento DragEnter, l'aspetto del puntatore cambia ed è possibile rilasciare il testo selezionato nel controllo RichTextBox.

    Quando si rilascia il pulsante del mouse, viene generato l'evento DragDrop e il testo selezionato sostituisce quello presente nel controllo RichTextBox.

Vedere anche

Attività

Procedura: eseguire operazioni di trascinamento tra applicazioni

Riferimenti

RichTextBox

Altre risorse

Controllo RichTextBox (Windows Form)

Controlli da utilizzare in Windows Form