Microsoft KB Archive/154884

= How To Find and Highlight Text in the RichTextBox Control =

Article ID: 154884

Article Last Modified on 7/1/2004

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Learning Edition
 * Microsoft Visual Basic 6.0 Learning Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition
 * Microsoft Visual Basic 4.0 Standard Edition
 * Microsoft Visual Basic 4.0 Professional Edition
 * Microsoft Visual Basic 4.0 32-Bit Enterprise Edition

-



This article was previously published under Q154884



SUMMARY
In many applications there is a function to search and highlight keywords in a text window. The RichTextBox control in Visual Basic can be made to provide this functionality, as shown in the sample code below.



MORE INFORMATION
 Start a new project in Visual Basic. Form1 is created by default. Place a Command button and a RichTextBox on Form1. Set the Text property of the RichTextBox to "This is an example of finding text in a rich text box."  Add the following code to the General Declarations section of Form1: Option Explicit

Private Sub Command1_Click HighlightWords RichTextBox1, "text", vbRed End Sub

Private Function HighlightWords(rtb As RichTextBox, _                                 sFindString As String, _                                  lColor As Long) _ As Integer

Dim lFoundPos As Long          'Position of first character 'of match Dim lFindLength As Long        'Length of string to find Dim lOriginalSelStart As Long Dim lOriginalSelLength As Long Dim iMatchCount As Integer     'Number of matches

'Save the insertion points current location and length lOriginalSelStart = rtb.SelStart lOriginalSelLength = rtb.SelLength

'Cache the length of the string to find lFindLength = Len(sFindString)

'Attempt to find the first match lFoundPos = rtb.Find(sFindString, 0,, rtfNoHighlight) While lFoundPos > 0 iMatchCount = iMatchCount + 1

rtb.SelStart = lFoundPos 'The SelLength property is set to 0 as         'soon as you change SelStart rtb.SelLength = lFindLength rtb.SelColor = lColor

'Attempt to find the next match lFoundPos = rtb.Find(sFindString, _           lFoundPos + lFindLength,, rtfNoHighlight) Wend

'Restore the insertion point to its original 'location and length rtb.SelStart = lOriginalSelStart rtb.SelLength = lOriginalSelLength

'Return the number of matches HighlightWords = iMatchCount

End Function

 Choose Start from the Run menu, or press the F5 key to start the project. Click the Command button and you should see that both occurrences of the word "text" are now shown in red.

