15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




Как найти и выделить текст в RichTextBox

Во многих приложениях есть функция поиска и выделения ключевых слов в текстовом окошке. В Visual Basic элемент управления RichTextBox позволяет использовать эту возможность.

  1. Создайте новый проект. Form1 создастся поумолчанию.

  2. Поместите на Form1 кнопку и RichTextBox. Установите свойство Text у RichTextBox в "This is an example of finding text in a rich text box."

  3. Добавьте следующий код в секцию 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
     



  4. Выберите Start в меню Run, или нажмите клавишу F5 для запуска проекта. После нажатия кнопки Вы увидите, что оба слова "text" будут выледены красным цветом.