Как найти и выделить текст в RichTextBox
Во многих приложениях есть функция поиска и выделения ключевых слов в
текстовом окошке. В Visual Basic элемент управления RichTextBox позволяет
использовать эту возможность.
- Создайте новый проект. Form1 создастся поумолчанию.
- Поместите на Form1 кнопку и RichTextBox. Установите свойство Text у
RichTextBox в "This is an example of finding text in a rich text box."
- Добавьте следующий код в секцию General Declarations формы 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 'Позиция первого найденного
'символа
Dim lFindLength As Long 'Длина искомой строки
Dim lOriginalSelStart As Long
Dim lOriginalSelLength As Long
Dim iMatchCount As Integer 'Количество найденных
'Сохраняем текущее местоположение и длину
lOriginalSelStart = rtb.SelStart
lOriginalSelLength = rtb.SelLength
'Сохраняем длину строки, которую будем искать
lFindLength = Len(sFindString)
'Пытаемся найти первое совпадение
lFoundPos = rtb.Find(sFindString, 0, , rtfNoHighlight)
While lFoundPos > 0
iMatchCount = iMatchCount + 1
rtb.SelStart = lFoundPos
'Как только Вы измените SelStart, то свойство SelLength
'установится в 0
rtb.SelLength = lFindLength
rtb.SelColor = lColor
'Пытаемся найти следующее совпадение
lFoundPos = rtb.Find(sFindString, _
lFoundPos + lFindLength, , rtfNoHighlight)
Wend
'Восстанавливаем первоначальное местоположение
'и длину
rtb.SelStart = lOriginalSelStart
rtb.SelLength = lOriginalSelLength
'Возвращаем количество совпадений
HighlightWords = iMatchCount
End Function
- Выберите Start в меню Run, или нажмите клавишу F5 для запуска проекта.
После нажатия кнопки Вы увидите, что оба слова "text" будут выледены
красным цветом.
|