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

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

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

  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 , selecionandoExecutar, typing WordPad na caixa de texto do Executar caixa de diálogo e, em seguida, clicando em OK.

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

Referência

RichTextBox

Outros recursos

RichTextBox Control (Windows Forms)

Controles a ser usado no Windows Forms