Bonjour,
Débutant dans l'utilisation du contrôle RichTextBox je ne parviens pas à conserver la mise en forme du texte lorsque je tente d'y insérer une chaîne de caractère provenant d'un autre contrôle.
La RTBox contient un texte dans lequel se trouvent des noms de champs de tables ACCESS - tels que <clients.nom> ou <clients.adresse> - destinés à être remplacées par leur valeur dans la base. La liste des tables et des champs se trouve dans un TreeView et je souhaite insérer des nodes de ce TreeView à la position du curseur dans la RTBox en les colorant en bleu simplement en sélectionnant ces nodes. Le node voulu est bien inséré au bon endroit mais c'est le début du texte qui est coloré en bleu sur la longueur du node et toute la mise en forme est perdue. Si je tente une 2ème opération le node est bien inséré au bon endroit mais cette fois c'est tout le texte qui se trouve coloré en bleu. Merci de bien vouloir m'aider à y voir plus clair.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
    Private Sub TVW_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TVW.AfterSelect
        If e.Node Is Nothing Then Exit Sub
        If e.Node.Level = 0 Then Exit Sub ' on ne peut sélectionner que les nodes du 2ème niveau
        Label1.Text = e.Node.Parent.Text & "." & e.Node.Text    ' texte du node sélectionné à insérer dans RTBox
        Dim x As Integer = RichTextBox1.SelectionStart  'position du curseur
        With RichTextBox1
            .Text = .Text.Insert(x, "<" & Label1.Text & ">")    '   insertion du texte à la  position du curseur entre <>
            .SelectionLength = Len(Label1.Text) + 2 '   sélection du texte inséré
            .SelectionColor = Color.Blue    'mise en forme du texte inséré
            .SelectionStart = x + Len(Label1.Text) + 2  'positionnement du curseur à la fin du texte inséré
            .SelectionLength = 0    ' on ne sélectionne rien pour continuer à saisir du texte
        End With
    End Sub