Compartilhar via


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

  1. Set the AllowDrop property of the RichTextBox control to true.

  2. 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);
    
  3. 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.

  1. 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.

  2. 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

Referência

RichTextBox

Outros recursos

Controle RichTextBox (Windows Forms)

Controles para uso no Windows Forms