Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Operace přetažení pomocí ovládacího prvku Windows Forms RichTextBox se provádějí zpracováním událostí DragEnter a DragDrop. Operace přetažení jsou proto s kontrolkou RichTextBox velmi jednoduché.
Povolení operací přetažení v ovládacím prvku RichTextBox
Nastavte vlastnost AllowDrop ovládacího prvku RichTextBox na
true.Napište kód v obslužné rutině události DragEnter. Pomocí příkazu
ifse ujistěte, že přetahovaná data mají přijatelný typ (v tomto případě text). Vlastnost DragEventArgs.Effect lze nastavit na libovolnou hodnotu DragDropEffects výčtu.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 Subprivate 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# a Visual C++) Do konstruktoru formuláře umístěte následující kód pro registraci obslužné rutiny události.
this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragEnter);this->richTextBox1->DragEnter += gcnew System::Windows::Forms::DragEventHandler (this, &Form1::richTextBox1_DragEnter);Napište kód pro zpracování DragDrop události. K načtení přetahovaných dat použijte metodu DataObject.GetData.
V následujícím příkladu kód nastaví vlastnost Text ovládacího prvku RichTextBox rovna datům, která jsou přetahována. Pokud už je v ovládacím prvku RichTextBox text, přetažený text se vloží do místa vložení.
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 Subprivate 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# a Visual C++) Do konstruktoru formuláře umístěte následující kód pro registraci obslužné rutiny události.
this.richTextBox1.DragDrop += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragDrop);this->richTextBox1->DragDrop += gcnew System::Windows::Forms::DragEventHandler (this, &Form1::richTextBox1_DragDrop);
Otestování funkcí přetažení v aplikaci
Uložte a sestavte aplikaci. V době, kdy běží, spusťte WordPad.
WordPad je textový editor nainstalovaný systémem Windows, který umožňuje operace přetažení myší. Je přístupný kliknutím na tlačítko Start, výběrem Spustit, zadáním
WordPaddo textového pole dialogového okna Spustit a následným kliknutím na OK.Jakmile je WordPad otevřený, zadejte do něj řetězec textu. Pomocí myši vyberte text a přetáhněte vybraný text na ovládací prvek RichTextBox v aplikaci pro Windows.
Všimněte si, že když najeďte myší na ovládací prvek RichTextBox (a v důsledku toho vyvoláte událost DragEnter), ukazatel myši se změní a vybraný text můžete umístit do ovládacího prvku RichTextBox.
Když uvolníte tlačítko myši, vybraný text se přesune (tj. je vyvolána událost DragDrop) a vloží se do ovládacího prvku RichTextBox.
Viz také
.NET Desktop feedback