Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 175
  • Last Modified:

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
0
WINN2012
Asked:
WINN2012
  • 2
1 Solution
 
Meir RivkinFull 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

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now