Gewusst wie: Aktivieren von Drag & Drop-Operationen mithilfe des RichTextBox-Steuerelements von Windows Forms
Aktualisiert: November 2007
Drag & Drop-Operationen mit dem RichTextBox-Steuerelement von Windows Forms werden durch Verarbeitung der Ereignisse DragEnter und DragDrop ausgeführt. Drag & Drop-Operationen werden daher durch das RichTextBox-Steuerelement erheblich vereinfacht.
So aktivieren Sie Drag-Operationen in einem RichTextBox-Steuerelement
Legen Sie für die AllowDrop-Eigenschaft des RichTextBox-Steuerelements true fest.
Schreiben Sie Code im Ereignishandler des DragEnter-Ereignisses. Stellen Sie mithilfe einer if-Anweisung sicher, dass die gezogenen Daten einen zulässigen Typ haben (in diesem Fall Text). Die DragEventArgs.Effect-Eigenschaft kann auf jeden Wert der DragDropEffects-Enumeration festgelegt werden.
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# und Visual C++) Fügen Sie den folgenden Code im Konstruktor des Formulars ein, um den Ereignishandler zu registrieren.
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);
Schreiben Sie Code zur Behandlung des DragDrop-Ereignisses. Rufen Sie die gezogenen Daten mit der DataObject.GetData-Methode ab.
Im nachstehenden Beispiel werden für die Text-Eigenschaft des RichTextBox-Steuerelements programmgesteuert die gezogenen Daten festgelegt. Wenn das RichTextBox-Steuerelement bereits Text enthält, wird der gezogene Text an der Einfügemarke eingefügt.
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# und Visual C++) Fügen Sie den folgenden Code im Konstruktor des Formulars ein, um den Ereignishandler zu registrieren.
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);
So testen Sie die Drag & Drop-Funktionalität in der Anwendung
Speichern und erstellen Sie die Anwendung. Führen Sie WordPad aus, während die Anwendung ausgeführt wird.
WordPad ist ein unter Windows installierter Text-Editor, der Drag & Drop-Operationen unterstützt. Sie greifen auf WordPad zu, indem Sie auf die Schaltfläche Start klicken, Ausführen auswählen, im Dialogfeld Ausführen im Textfeld WordPad eingeben und dann auf OK klicken.
Sobald WordPad geöffnet ist, geben Sie eine Textzeichenfolge ein. Markieren Sie den Text mithilfe der Maus, und ziehen Sie ihn anschließend zum RichTextBox-Steuerelement in der Windows-Anwendung.
Beachten Sie, dass der Mauszeiger seine Form ändert, wenn Sie mit der Maus auf das RichTextBox-Steuerelement zeigen (und damit das DragEnter-Ereignis auslösen) und Sie den markierten Text im RichTextBox-Steuerelement ablegen können.
Wenn Sie die Maustaste loslassen, wird der markierte Text abgelegt (d. h., das DragDrop-Ereignis wird ausgelöst) und in das RichTextBox-Steuerelement eingefügt.
Siehe auch
Aufgaben
Gewusst wie: Ausführen von Drag & Drop-Operationen zwischen Anwendungen