Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As operações de arrastar e soltar com o controle Windows Forms RichTextBox são realizadas ao manipular os eventos DragEnter e DragDrop. Portanto, as operações de arrastar e soltar são extremamente simples com o RichTextBox controle.
Para habilitar operações de arrastar em um controle RichTextBox
Defina a propriedade AllowDrop do controle RichTextBox para
true.Escreva código no manipulador de eventos do DragEnter evento. Use uma instrução
ifpara garantir que os dados que estão sendo arrastados sejam de um tipo aceitável (nesse caso, texto). A DragEventArgs.Effect propriedade pode ser definida como 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 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# e Visual C++) Coloque o código a seguir 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 o código para lidar com o evento DragDrop. Use o DataObject.GetData método para recuperar os dados que estão sendo arrastados.
No exemplo a seguir, o código define a Text propriedade do RichTextBox controle igual aos dados que estão sendo arrastados. Se já houver texto no RichTextBox controle, o texto arrastado será 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 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# e Visual C++) Coloque o código a seguir 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
Salve e crie seu aplicativo. Enquanto ele estiver em execução, execute o WordPad.
O WordPad é um editor de texto instalado pelo Windows que permite operações de arrastar e soltar. Ele pode ser acessado clicando no botão Iniciar , selecionando Executar, digitando
WordPadna caixa de texto da caixa de diálogo Executar e clicando em OK.Quando o WordPad estiver aberto, digite uma cadeia de caracteres de texto nele. Usando o mouse, selecione o texto e arraste o texto selecionado para o RichTextBox controle em seu aplicativo do Windows.
Observe que quando você aponta o mouse para o RichTextBox controle (e, consequentemente, aciona o DragEnter evento), o ponteiro do mouse é alterado e você pode soltar o texto selecionado no RichTextBox controle.
Quando você libera o botão do mouse, o texto selecionado é removido (ou seja, o DragDrop evento é acionado) e é inserido dentro do RichTextBox controle.
Consulte também
.NET Desktop feedback