Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le operazioni di trascinamento e rilascio con il controllo RichTextBox di Windows Forms vengono eseguite gestendo gli eventi DragEnter e DragDrop. Pertanto, le operazioni di drag-and-drop sono estremamente semplici con il controllo RichTextBox.
Per abilitare le operazioni di trascinamento in un controllo RichTextBox
Impostare la proprietà AllowDrop del controllo RichTextBox su
true
.Scrivere codice nel gestore eventi dell'evento DragEnter. Usare un'istruzione
if
per assicurarsi che i dati trascinati siano di un 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(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++) Inserire il codice seguente nel costruttore del modulo per registrare il gestore eventi.
this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragEnter);
this->richTextBox1->DragEnter += gcnew System::Windows::Forms::DragEventHandler (this, &Form1::richTextBox1_DragEnter);
Scrivere codice per gestire l'evento DragDrop. Utilizza il metodo DataObject.GetData per recuperare i dati trascinati.
Nell'esempio seguente il codice imposta la proprietà Text del controllo RichTextBox uguale ai dati trascinati. Se nel controllo RichTextBox è già presente testo, il testo trascinato viene 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: 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++) Inserire il codice seguente nel costruttore del modulo per registrare il gestore eventi.
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 trascina e rilascia nell'applicazione
Salvare e compilare l'applicazione. Mentre un programma è in esecuzione, eseguire WordPad.
WordPad è un editor di testo installato da Windows che consente operazioni di trascinamento. È accessibile facendo clic sul pulsante Avvia , selezionando Esegui, digitando
WordPad
nella casella di testo della finestra di dialogo Esegui , e quindi facendo clic su OK.Una volta aperto WordPad, digitare una stringa di testo. Usando il mouse, selezionare il testo e quindi trascinare il testo selezionato sul controllo RichTextBox nell'applicazione Windows.
Notare che quando si passa il mouse sul controllo RichTextBox (e, di conseguenza, si genera l'evento DragEnter), il puntatore del mouse cambia ed è possibile spostare il testo selezionato nel controllo RichTextBox.
Quando si rilascia il pulsante del mouse, il testo selezionato viene eliminato (ovvero viene generato l'evento DragDrop) e viene inserito all'interno del controllo RichTextBox.
Vedere anche
.NET Desktop feedback