Change color of specific value in a richtexbox

I am attempting to use the following code to change the color of all the 1s in my field.
The field looks like this.
0010 1110 0000 1010 0001 1111 1000 0000 0110

The whole field ends up red instead of just the 1s.

Private Sub HighLightWords(ByVal Bitmap As String, ByVal myColor As Color)
        ''http://www.vbforums.com/showthread.php?125371-Change-Text-Color-and-Font-Character-by-Character
        Dim strWord As String
        Dim lPos As Long
 
        strWord = "1"
        If Bitmap = "Bitmap1" Then
            lPos = InStr(1, Me.txtBinary1.Text, strWord, vbTextCompare)
 
            If lPos > 0 Then
                With txtBinary1
                    .SelectionStart = lPos - 1
                    .SelectionLength = Len(strWord)
                    .SelectionColor = myColor
                    .SelectionStart = Len(Me.txtBinary1.Text)
                End With
            End If
        Else
            lPos = InStr(1, Me.txtBinary2.Text, strWord, vbTextCompare)
            If lPos > 0 Then
                With txtBinary2
                    .SelectionStart = lPos - 1
                    .SelectionLength = Len(strWord)
                    .SelectionColor = myColor
                    .SelectionStart = Len(Me.txtBinary2.Text)
                End With
            End If
        End If
End sub
WINN2012Asked:
Who is Participating?
 
Meir RivkinConnect With a Mentor Full stack Software EngineerCommented:
this code will color all the 1s in red:
Dim i = 0
        For Each c In Me.txtBinary1.Text
            If c = "1"c Then
                With RichTextBox1
                    .SelectionStart = i
                    .SelectionLength = 1
                    .SelectionColor = Drawing.Color.Red
                End With
            End If
            i = i + 1
        Next

Open in new window

0
 
Meir RivkinFull stack Software EngineerCommented:
here's your function:

    Private Sub HighLightWords(ByVal Bitmap As String, ByVal myColor As Color)
        Dim i = 0
        Dim ctrl As RichTextBox

        If Bitmap = "Bitmap1" Then
            ctrl = Me.txtBinary1.Text

        Else
            ctrl = Me.txtBinary2.Text
        End If

        For Each c In ctrl.Text
            If c = "1"c Then
                With ctrl
                    .SelectionStart = i
                    .SelectionLength = 1
                    .SelectionColor = myColor
                End With
            End If
            i = i + 1
        Next

    End Sub

Open in new window

0
 
WINN2012Author Commented:
Worked like a champ..tyvm
I think I couldnt get it to work because I was not incrementing the counter. So it just started over again.

I do have a hiccup though, the first time i run the code it works and all 1s are red as desired, if I make a change on my form which triggers the code again, the entire line is red again.
I'm sure I'll figure it out.

MW
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.