Je me suis auto-formé grâce à des bouts de codes alors je me suis dit que je pouvais partager de temps en temps les codes sur lesquels j'ai cogité s'ils peuvent aider.

Et en même temps on pourra peut être m'aider à améliorer mon coding.



Principe : L'idée est de faire une fonction qui fait interagir les richtextbox avec des boutons. En cliquant sur les boutons on peut par la suite écrire dans la richtextbox en bold + italic + underline. On peut se déplacer dans la richtextbox.

Les boutons une fois appuyés deviennent rouges pour permettre de continuer à éditer le texte. Par ailleurs si un texte est sélectionné dans la richtextbox le fait d'appuyer sur le bouton lui donne le style demandé.

Nom : 2021-01-05 23_09_55-Window.png
Affichages : 137
Taille : 2,5 Ko

Il y a deux fonctions, l'une pour éditer dans la richtextbox, l'autre qui régit les événements des boutons.

L'une se place donc dans l'événement _TextChanged de la richtextbox
formatrichtb(rtb0, com0comb, com0comu, com0comi).



L'autre dans l'événement _Click du bouton
clickbuttonformatrichbox(rtb0, ActiveControl, com0comb, com0comu, com0comi).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Sub formatrichtb(RichTextBox As System.Windows.Forms.RichTextBox, ButtonBold As System.Windows.Forms.Button, ButtonUnderline As System.Windows.Forms.Button, ButtonItalic As System.Windows.Forms.Button)
        Dim positioncurseur As Long
 
        positioncurseur = RichTextBox.SelectionStart
 
 
        If RichTextBox.Text = "" Then Exit Sub 'prévient les erreurs du à des raccourcis claviers 
 
        If ButtonUnderline.ForeColor = Color.Red Or ButtonBold.ForeColor = Color.Red Or ButtonItalic.ForeColor = Color.Red Then
 
 
            RichTextBox.Select(positioncurseur - 1, 1) 'on selectionne le caractère qui vient d'être inscrit
        End If
 
        If ButtonUnderline.ForeColor = Color.Red And ButtonBold.ForeColor = Color.Red And ButtonItalic.ForeColor = Color.Red Then
 
 
 
 
 
            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Bold Or FontStyle.Italic)
 
 
        ElseIf ButtonBold.ForeColor = Color.Red And ButtonItalic.ForeColor = Color.Red Then
 
            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Bold Or FontStyle.Italic)
        ElseIf ButtonUnderline.ForeColor = Color.Red And ButtonItalic.ForeColor = Color.Red Then
            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Italic)
        ElseIf ButtonUnderline.ForeColor = Color.Red And ButtonBold.ForeColor = Color.Red Then
            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Bold)
 
 
        ElseIf ButtonBold.ForeColor = Color.Red Then 'en cas de selection
 
 
            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Bold)
 
 
 
        ElseIf ButtonItalic.ForeColor = Color.Red Then
 
            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Italic)
 
 
 
        ElseIf ButtonUnderline.ForeColor = Color.Red Then
 
 
            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline)
 
 
 
        End If
 
 
        If ButtonUnderline.ForeColor = Color.Red Or ButtonBold.ForeColor = Color.Red Or ButtonItalic.ForeColor = Color.Red Then RichTextBox.Select(positioncurseur, 0)
 
 
    End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Sub clickbuttonformatrichbox(RichTextBox As System.Windows.Forms.RichTextBox, ActualButton As System.Windows.Forms.Button, ButtonBold As System.Windows.Forms.Button, ButtonUnderline As System.Windows.Forms.Button, ButtonItalic As System.Windows.Forms.Button)
 
 
 
 
 
        If RichTextBox.SelectionLength > 0 Then 'si un text est selectionné dans la richtextbox
 
 
 
                If ActualButton Is ButtonBold Then
 
 
                    If RichTextBox.SelectionFont.Bold Then 'its already bold, so set it to regular
 
                        If RichTextBox.SelectionFont.Italic And RichTextBox.SelectionFont.Underline Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Italic)
 
                        ElseIf RichTextBox.SelectionFont.Italic Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Italic)
 
                        ElseIf RichTextBox.SelectionFont.Underline Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline)
 
                        Else 'il est seulement bold
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Regular)
 
                        End If
 
 
 
                    Else 'make it bold
 
                        If RichTextBox.SelectionFont.Italic And RichTextBox.SelectionFont.Underline Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Italic Or FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Italic Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Italic Or FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Underline Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Bold)
 
                        Else 'il est seulement bold
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Bold)
                        End If
 
 
 
 
                    End If
 
 
 
 
 
 
                ElseIf ActualButton Is ButtonItalic Then
 
 
                    If RichTextBox.SelectionFont.Italic Then 'its already italic, so set it to regular
 
                        If RichTextBox.SelectionFont.Bold And RichTextBox.SelectionFont.Underline Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Bold Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Underline Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline)
 
                        Else 'il est seulement bold
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Regular)
 
                        End If
 
 
 
                    Else 'make it italic
 
                        If RichTextBox.SelectionFont.Bold And RichTextBox.SelectionFont.Underline Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Italic Or FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Bold Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Italic Or FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Underline Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Italic)
 
                        Else 'il est seulement italic
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Italic)
                        End If
 
                    End If
 
 
 
                ElseIf ActualButton Is ButtonUnderline Then
 
                    If RichTextBox.SelectionFont.Underline Then 'its already underline, so set it to regular
 
                        If RichTextBox.SelectionFont.Bold And RichTextBox.SelectionFont.Italic Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Italic Or FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Bold Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Italic Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Italic)
 
                        Else 'il est seulement underline
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Regular)
 
                        End If
 
 
 
                    Else 'make it underline
 
                        If RichTextBox.SelectionFont.Bold And RichTextBox.SelectionFont.Italic Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Italic Or FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Bold Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Bold)
 
                        ElseIf RichTextBox.SelectionFont.Italic Then
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline Or FontStyle.Italic)
 
                        Else 'il est seulement underline
                            RichTextBox.SelectionFont = New System.Drawing.Font(RichTextBox.SelectionFont.FontFamily, RichTextBox.SelectionFont.Size, FontStyle.Underline)
                        End If
 
                    End If
 
                End If
            Else 'si pas de texte selectionné on met juste en rouge pour le boutton pour utilisation de formatrichtb
 
 
                If ActualButton.ForeColor = Color.Red Then
                    ActualButton.ForeColor = Color.Black
 
                Else
 
                    ActualButton.ForeColor = Color.Red
                End If
 
            RichTextBox.Select() 'on selectionne la richtextbox pour directement écrire dedans
 
        End If
 
 
 
 
 
    End Sub