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
Impostare la proprietà AllowDrop del controllo RichTextBox su true.
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);
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
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.
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