Postupy: Povolení operací přetažení myší pomocí ovládacího prvku Windows Forms RichTextBox
Operace přetažení pomocí ovládacího prvku model Windows Forms RichTextBox se provádějí zpracováním DragEnter událostí a DragDrop událostí. Operace přetažení jsou tedy s ovládacím RichTextBox prvek velmi jednoduché.
Povolení operací přetažení v ovládacím prvku RichTextBox
AllowDrop Nastavte vlastnost RichTextBox ovládacího prvku na
true
hodnotu .Napište kód v obslužné rutině DragEnter události události.
if
Pomocí příkazu se ujistěte, že přetahovaná data mají přijatelný typ (v tomto případě text). Vlastnost DragEventArgs.Effect lze nastavit na libovolnou hodnotu výčtu 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# 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. Použijte metodu DataObject.GetData k načtení přetahovaných dat.
V následujícím příkladu kód nastaví Text vlastnost RichTextBox ovládacího prvku, který se rovná přetahování dat. Pokud ovládací prvek už obsahuje text RichTextBox , vloží se přetažený text 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 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# 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 možnosti Spustit, zadáním
WordPad
textového pole dialogového okna Spustit a následným kliknutím na tlačítko 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 RichTextBox ovládací prvek v aplikaci pro Windows.
Všimněte si, že když najeďte myší na RichTextBox ovládací prvek (a v důsledku toho DragEnter vyvoláte událost), změní se ukazatel myši a vybraný text můžete do RichTextBox ovládacího prvku vložit.
Když uvolníte tlačítko myši, vybraný text se zahodí (tj DragDrop . vyvolá událost) a vloží se do RichTextBox ovládacího prvku.
Viz také
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro