Como: Ativar as operações de arrastar e soltar com o controle RichTextBox do Windows Forms
Operações de arrastar e soltar com o Windows Forms RichTextBox controle são feitas pelo tratamento de DragEnter e DragDrop eventos. Assim, as operações de arrastar e soltar são extremamente simples com o RichTextBox de controle.
Para ativar as operações de arrastar em um controle RichTextBox
Set the AllowDrop property of the RichTextBox control to true.
Escrever o código no manipulador de eventos da DragEnter de evento. Use um if a instrução para garantir que os dados sendo arrastados são de um tipo aceitável (em texto, neste caso). O DragEventArgs.Effect propriedade pode ser definida como qualquer valor de 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(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++) 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->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 sendo arrastados.
No exemplo abaixo, o código define o Text propriedade da RichTextBox controlar igual aos dados sendo arrastados. Se já houver texto na 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: 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++) 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->DragDrop += gcnew System::Windows::Forms::DragEventHandler (this, &Form1::richTextBox1_DragDrop);
Para testar a funcionalidade de 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 selecionando Executar, digitação WordPad na caixa de texto o Executar caixa de diálogo e, em seguida, clicando em OK.
Após abrir o WordPad, digite uma seqüência de texto nela. Usando o mouse, selecione o texto e arraste o texto selecionado para o RichTextBox o controle em seu aplicativo do Windows.
Observe que, quando você apontar o mouse na RichTextBox controle (e, conseqüentemente, aumentar a DragEnter evento), o ponteiro do mouse e você pode soltar o texto selecionado na RichTextBox de controle.
Quando você soltar o botão do mouse, o texto selecionado será descartado (isto é, o DragDrop evento é gerado) e é inserido dentro do RichTextBox de controle.
Consulte também
Tarefas
Como: Executar operações de arrastar e soltar entre aplicativos