Partager via


Comment : activer les opérations glisser-déplacer avec le contrôle RichTextBox Windows Forms

Les opérations glisser-déplacer avec le contrôle RichTextBox Windows Forms sont réalisées en manipulant les événements DragEnter et DragDrop. Ainsi, les opérations glisser-déplacer sont extrêmement simples avec le contrôle RichTextBox.

Pour activer les opérations glisser dans un contrôle RichTextBox

  1. Affectez à la propriété AllowDrop du contrôle RichTextBox la valeur true.

  2. Écrivez du code dans le gestionnaire d'événements de l'événement DragEnter. Utilisez une instruction if pour vous assurer que les données qui sont glissées sont d'un type acceptable (dans ce cas, du texte). La propriété DragEventArgs.Effect peut avoir toute valeur de l'énumération DragDropEffects.

    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# et Visual C++) Placez le code suivant dans le constructeur du formulaire pour inscrire le gestionnaire d'événements.

    this.richTextBox1.DragEnter += new
        System.Windows.Forms.DragEventHandler
        (this.richTextBox1_DragEnter);
    
    this->richTextBox1->DragEnter += gcnew
       System::Windows::Forms::DragEventHandler
       (this, &Form1::richTextBox1_DragEnter);
    
  3. Écrivez le code permettant de gérer l'événement DragDrop. Utilisez la méthode DataObject.GetData pour extraire les données glissées.

    Dans l'exemple ci-dessous, le code attribue à la propriété Text du contrôle RichTextBox une valeur égale aux données glissées. Si le contrôle RichTextBox contient déjà du texte, le texte glissé est inséré au point d'insertion.

    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# et Visual C++) Placez le code suivant dans le constructeur du formulaire pour inscrire le gestionnaire d'événements.

    this.richTextBox1.DragDrop += new
        System.Windows.Forms.DragEventHandler
        (this.richTextBox1_DragDrop);
    
    this->richTextBox1->DragDrop += gcnew 
       System::Windows::Forms::DragEventHandler
       (this, &Form1::richTextBox1_DragDrop);
    

Pour tester la fonctionnalité glisser-déplacer dans votre application

  1. Enregistrez et générez votre application. Pendant son exécution, démarrez WordPad.

    WordPad est un éditeur de texte installé par Windows qui autorise les opérations glisser-déplacer. Pour y accéder, cliquez sur le bouton Démarrer, sélectionnez Exécuter, tapez WordPad dans la zone de texte de la boîte de dialogue Exécuter, puis cliquez sur OK.

  2. Dès que WordPad est ouvert, tapez une chaîne de texte. Avec la souris, sélectionnez le texte, puis faites glisser le texte sélectionné vers le contrôle RichTextBox de votre application Windows.

    Notez que lorsque vous placez le pointeur de la souris sur le contrôle RichTextBox (et que vous déclenchez ainsi l'événement DragEnter), le pointeur change et vous pouvez placer le texte sélectionné dans le contrôle RichTextBox.

    Lorsque vous relâchez le bouton de la souris, le texte sélectionné est supprimé (autrement dit, l'événement DragDrop est levé) et le texte est remplacé dans le contrôle RichTextBox.

Voir aussi

Tâches

Comment : exécuter des opérations de glisser-déplacer entre des applications

Référence

RichTextBox

Autres ressources

RichTextBox, contrôle (Windows Forms)

Contrôles à utiliser dans les Windows Forms