Como: Ativar as operações de do tipo arrastar e soltar com o controle RichTextBox do Windows Forms
Operações de do tipo arrastar e soltar com o Windows Forms RichTextBox controle são feitos pelo tratamento de DragEnter e DragDrop eventos. Assim, operações de do tipo arrastar e soltar são extremamente simples com o RichTextBox controle.
Para ativar as operações de arrastar em um controle RichTextBox
Set the AllowDrop property of the RichTextBox control to true.
Escrever código no manipulador de eventos do DragEnter evento. Usar um if demonstrativo para garantir que os dados sendo arrastados sejam de um tipo aceitável (no caso, texto). The DragEventArgs.Effect propriedade pode ser conjunto para qualquer valor da DragDropEffects enumeração.
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++) Coloque o seguinte código no construtor do formulário para registrar o manipulador de eventos.
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);
Escreva código para manipular o evento DragDrop.Use o DataObject.GetData método para recuperar os dados que está sendo arrastados.
No exemplo a seguir, o código define o Text propriedade das RichTextBox controle igual aos dados sendo arrastados. Se já houver texto no RichTextBox controle, o texto arrastado é inserido no ponto de inserção.
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++) Coloque o seguinte código no construtor do formulário para registrar o manipulador de eventos.
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);
Para testar a funcionalidade de do tipo arrastar e soltar em seu aplicativo
Salvar e criar seu aplicativo.Enquanto estiver em execução, execute o WordPad.
O WordPad é um editor de texto instalado pelo Windows que permite que operações de arrastar-e-soltar.É acessível clicando o Iniciar botão , selecionandoExecutar, typing WordPad na caixa de texto do Executar caixa de diálogo e, em seguida, clicando em OK.
Uma vez em aberto o WordPad, digite uma seqüência de caracteres de texto nela.Usando o mouse, selecionar o texto e, em seguida, arrastar o texto selecionado para o RichTextBox controle em seu aplicativos do Windows.
Observe que, quando você aponte o mouse para o RichTextBox controle (e, conseqüentemente, aumentar a DragEnter altera do evento), o ponteiro do mouse e você pode soltar o texto selecionado para o RichTextBox controle.
Quando você soltar o botão do mouse, o texto selecionado é descartado (isto é, a DragDrop evento é disparado) e é inserido dentro do RichTextBox controle.
Consulte também
Tarefas
Como: Executar operações de arrastar-e-soltar entre aplicativos