X.Contains(RichTextBox1.Text.ToCharArray(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength)) = True Then
Public Class Form1 Dim LastSel As Integer Dim Longueur As Integer Dim A As String = "LE TEXTE CET ENIGME " Dim X As String = "CETTE CHAINE EXISTE" Dim b As String = " AUTREMENT NON" Dim ChangeCouleur As Boolean = False Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load RichTextBox1.Text = A & X & b End Sub Private Sub RichTextBox1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.SelectionChanged If RichTextBox1.Text.Contains(X) = False Then Exit Sub If ChangeCouleur = True Then Exit Sub LastSel = RichTextBox1.SelectionStart Longueur = RichTextBox1.SelectionLength Me.Text = RichTextBox1.Text.ToCharArray(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength) If RichTextBox1.SelectionStart < RichTextBox1.Text.Length Then ChangeCouleur = True If RichTextBox1.SelectionLength > 0 And X.Contains(RichTextBox1.Text.ToCharArray(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength)) = True Then RichTextBox1.Find(X) RichTextBox1.SelectionColor = Color.Red RichTextBox1.SelectionLength = Longueur RichTextBox1.SelectionStart = LastSel Else RichTextBox1.Find(X) RichTextBox1.SelectionColor = Color.Black RichTextBox1.SelectionLength = Longueur RichTextBox1.SelectionStart = LastSel End If ChangeCouleur = False End If End Sub End Class
Option Explicit Private Sub Form_Load() Debug.Print "Form_Load" RichTextBox1.Text = "aaaaa34567fff" End Sub Private Sub RichTextBox1_SelChange() Dim PositionDebutSelection As Integer Dim PositionFinSelection As Integer Dim texte As String Static NoRecursif As Boolean If Not NoRecursif Then Debug.Print "RichTextBox1_SelChange + NoRecursif" NoRecursif = True texte = "34567" 'Permet de détécter si le text a changer depuis l'appel précédant (évite le problème d'enchainement d'événement, SelectionChanged appeler av TextChanged) PositionDebutSelection = RichTextBox1.SelStart PositionFinSelection = RichTextBox1.SelStart + RichTextBox1.SelLength If InStr(RichTextBox1.Text, texte) Then Dim PositionDebut34567 As Integer Dim PositionFin34567 As Integer PositionDebut34567 = InStr(RichTextBox1.Text, texte) - 1 PositionFin34567 = PositionDebut34567 + Len(texte) If PositionDebutSelection > PositionDebut34567 And PositionDebutSelection < PositionFin34567 Then PositionDebutSelection = PositionDebut34567 End If If PositionFinSelection > PositionDebut34567 And PositionFinSelection < PositionFin34567 Then PositionFinSelection = PositionFin34567 End If End If If PositionDebutSelection <> RichTextBox1.SelStart Then Debug.Print "RichTextBox1.SelStart = " & PositionDebutSelection RichTextBox1.SelStart = PositionDebutSelection End If If RichTextBox1.SelLength <> PositionFinSelection - PositionDebutSelection Then Debug.Print "RichTextBox1.SelLength = " & PositionFinSelection - PositionDebutSelection RichTextBox1.SelLength = PositionFinSelection - PositionDebutSelection End If NoRecursif = False End If End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic Class Form1 Dim LastSel As Integer Dim Longueur As Integer Dim A As String = "sélectionnez du texte " Dim X As String = "<cette sélection existe>" Dim b As String = " sinon l'existance est nulle" Dim ChangeCouleur As Boolean = False Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load RichTextBox1.Text = A & X & b End Sub Private Sub RichTextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyUp If e.KeyCode = Keys.ShiftKey Then Dim SelText As String = RichTextBox1.SelectedText ChangeCouleur = True If X.Contains(SelText) = True Then RichTextBox1.Find(X) RichTextBox1.SelectionColor = Color.Red Else RichTextBox1.Find(X) RichTextBox1.SelectionColor = Color.Black End If RichTextBox1.SelectionLength = Longueur RichTextBox1.SelectionStart = LastSel ChangeCouleur = False End If End Sub Private Sub RichTextBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseUp Dim SelText As String = RichTextBox1.SelectedText ChangeCouleur = True If SelText.Length 0 Or X.Contains(SelText) False Then RichTextBox1.Find(X) RichTextBox1.SelectionColor = Color.Black Else RichTextBox1.Find(X) RichTextBox1.SelectionColor = Color.Red End If RichTextBox1.SelectionLength = Longueur RichTextBox1.SelectionStart = LastSel ChangeCouleur = False End Sub Private Sub RichTextBox1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.SelectionChanged If ChangeCouleur = True Then Exit Sub LastSel = RichTextBox1.SelectionStart Longueur = RichTextBox1.SelectionLength Me.Text = RichTextBox1.Text.ToCharArray(RichTextBox1.SelectionStart, RichTextBox1.SelectionLength) End Sub End Class
Dim LastSel, Longueur As Integer Dim A As String Dim TxtX As String Dim B As String Dim ChangeCouleur As Boolean Private Sub Form_Load() ChangeCouleur = False A = "sélectionnez du texte " TxtX = "<cette sélection existe>" B = " sinon l'existance est nulle" RichTextBox1.Text = A & TxtX & B End Sub Private Sub ColorText() Dim SelectedText As String SelectedText = RichTextBox1.SelText ChangeCouleur = True RichTextBox1.SelStart = InStr(1, RichTextBox1.Text, TxtX) RichTextBox1.SelLength = Len(TxtX) If Len(SelectedText) 0 Or InStr(1, TxtX, SelectedText) 0 Then RichTextBox1.SelColor = vbBlack Else RichTextBox1.SelColor = vbRed End If RichTextBox1.SelStart = LastSel RichTextBox1.SelLength = Longueur ChangeCouleur = False End Sub Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 16 Then ColorText End Sub Private Sub RichTextBox1_MouseUp(Button As Integer, Shift As Integer, X As Single, y As Single) LastSel = RichTextBox1.SelStart Longueur = RichTextBox1.SelLength ColorText End Sub Private Sub RichTextBox1_SelChange() If ChangeCouleur = True Then Exit Sub LastSel = RichTextBox1.SelStart Longueur = RichTextBox1.SelLength Me.Caption = RichTextBox1.SelText End Sub
- la sélection de gauche à droite ne modifie pas le selstart
- la sélection de droite à gauche modifie le selstart (le décroit de 1 par 1)
Ma réponse est et sera toujours NIET, Acive.
Je ne serai plus jamais la victime de "MicroTonTon" (suis furieux de ce qu'il a fait)