Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 05.12.2015
Сообщений: 24

RichTextBox. Изменения цвета текста выбранных слов

24.12.2015, 03:54. Показов 4856. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток))

Помогите пожалуйста с решением моей задачи..
И так вот собственно и сама задача
у нас есть RichTextBox, так же нужен как я уже успел понять массив. В который я указу те слова которые будут окрашиваться в цвет (тот что я задам).
но у меня пока не выходит это сделать((
пытался изучить в просторах интернета но в голову влезло слишком много информации не нужной и я окончательно запутался.. Помогите пожалуйста...

так же на этом форуме набрел на следующий код
VB.NET
1
2
3
4
5
6
7
8
9
10
Dim Words_dont_come_easy = {"ey", "ye", "tratata"}
For Each Slovo In Words_dont_come_easy
            Dim Sovpadeniya As MatchCollection = Regex.Matches(WhereFind, Slovo, RegexOptions.IgnoreCase)
            For Each Sovpalo In Sovpadeniya
                RichTextBox1.SelectionStart = Sovpalo.Index
                RichTextBox1.SelectionLength = Sovpalo.Length
                RichTextBox1.SelectionBackColor = Color.DarkGreen
                RichTextBox1.SelectionColor = Color.Red
            Next Sovpalo
Next Slovo
но код не работает да и среда ругается на него.

так же нашел еще вот фрагмент кода, но он не подойдет так как тут программа перекрасит одно слово только.. А планировалось несколько..
VB.NET
1
2
3
4
5
6
7
8
Dim Words_dont_come_easy As String = "ey"
        Dim allIp As MatchCollection = Regex.Matches(RichTextBox1.Text, Words_dont_come_easy)
        For Each ip As Match In allIp
            RichTextBox1.SelectionStart = ip.Index
            RichTextBox1.SelectionLength = ip.Length
            RichTextBox1.SelectionBackColor = Color.DarkGreen
            RichTextBox1.SelectionColor = Color.Yellow
        Next
Заранее большое спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2015, 03:54
Ответы с готовыми решениями:

Смена цвета текста в richtextbox
Например пишешь в ричбокс слово "ey" и при встрече таких слов, они должны быть красным цветом.

Изменение цвета определенных слов в RichTextBox
Привет всем! В общем такая задача: мне нужно сделать подсветку синтаксиса. Как сделать ее я знаю, у меня алгоритм такой: есть массив...

Изменение цвета текста в RichTextBox
Здраствуйте =) Подскажите ,пожалуйста, как в RichTextBox менять цвет теста. Хочу написать что то типа текстового редактора для языка, в...

18
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
24.12.2015, 06:10
Лучший ответ Сообщение было отмечено Loner95 как решение

Решение

Цитата Сообщение от Loner95 Посмотреть сообщение
перекрасит одно слово только
Маски допишите через прямую черту
VB.NET
1
2
3
4
5
6
7
8
        Dim Words_dont_come_easy As String = "поиск|обработчик"
        Dim allIp As MatchCollection = Regex.Matches(RichTextBox1.Text, Words_dont_come_easy)
        For Each ip As Match In allIp
            RichTextBox1.SelectionStart = ip.Index
            RichTextBox1.SelectionLength = ip.Length
            RichTextBox1.SelectionBackColor = Color.DarkGreen
            RichTextBox1.SelectionColor = Color.Yellow
        Next
Миниатюры
RichTextBox. Изменения цвета текста выбранных слов  
4
0 / 0 / 0
Регистрация: 05.12.2015
Сообщений: 24
26.12.2015, 18:31  [ТС]
Спасибо большое))

А что нужно будет сделать если мне нужно будет 2 массива для проверки?
скажем так в первом массиве я напишу так что бы слова он окрашивал одним цветом
а в другом естественно другим цветом..
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
26.12.2015, 18:37
Loner95, выполнить данную процкдуру еще раз, но с другим цветом и другой маской слов. Но лучще делать все сразу в одном цикле, но с разными условиями.
0
0 / 0 / 0
Регистрация: 05.12.2015
Сообщений: 24
26.12.2015, 18:49  [ТС]
Вот такой интересный баг я нашел
Вставил код в RichTextBox
VB.NET
1
2
3
4
5
6
7
8
Dim Words_dont_come_easy As String = "ура|опа"
        Dim allIp As MatchCollection = Regex.Matches(RichTextBox1.Text, Words_dont_come_easy)
        For Each ip As Match In allIp
            RichTextBox1.SelectionStart = ip.Index
            RichTextBox1.SelectionLength = ip.Length
            RichTextBox1.SelectionBackColor = Color.White
            RichTextBox1.SelectionColor = Color.Red
        Next
Получилось вот что:
пишу текст скажем так фразу "Привет мир!!" потом нажимаю Enter что бы перейти на следующую строку пишу дальше то слово что указанно в коде "Ура" получается все так как на картинке 1. Потом нажимаю Enter и происходит следующие. Удаляется слово "Ура" а курсор потом спускается на следующую строку. Почему все так ?
Миниатюры
RichTextBox. Изменения цвета текста выбранных слов   RichTextBox. Изменения цвета текста выбранных слов  
0
0 / 0 / 0
Регистрация: 05.12.2015
Сообщений: 24
26.12.2015, 18:51  [ТС]
Цитата Сообщение от Yury Komar Посмотреть сообщение
выполнить данную процкдуру еще раз, но с другим цветом и другой маской слов. Но лучще делать все сразу в одном цикле, но с разными условиями.
Интересно даже стало.. Но как это будет выглядеть могли бы вы продемонстрировать?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
26.12.2015, 18:56
Цитата Сообщение от Loner95 Посмотреть сообщение
баг
Это не баг, если Вы выделяете текст - то снимайте выделение.

Цитата Сообщение от Loner95 Посмотреть сообщение
Но как это будет выглядеть могли бы вы продемонстрировать?
Да ничего там особо интересного нет, заводите хеш-таблицу с ключами-цветами и в бой
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        Dim HT As New Hashtable
        HT.Add("Dim", Color.Red)
        HT.Add("String", Color.Blue)
        HT.Add("As", Color.Green)
        HT.Add("RichTextBox1", Color.Cyan)
 
        Dim Words_dont_come_easy As String = String.Join("|", HT.Keys.Cast(Of String).ToArray)
        Dim allIp As MatchCollection = Regex.Matches(RichTextBox1.Text, Words_dont_come_easy)
        For Each ip As Match In allIp
            RichTextBox1.SelectionStart = ip.Index
            RichTextBox1.SelectionLength = ip.Length
            'RichTextBox1.SelectionBackColor = Color.Yellow
            RichTextBox1.SelectionColor = HT(ip.Value)
        Next
        RichTextBox1.SelectionLength = 0
Результат
6
0 / 0 / 0
Регистрация: 05.12.2015
Сообщений: 24
26.12.2015, 19:04  [ТС]
Цитата Сообщение от Памирыч Посмотреть сообщение
Это не баг, если Вы выделяете текст - то снимайте выделение.
нет я не выделяю сообщение я просто как обычно в ворде пишу текст и пользуюсь пробелами и enterom и все.. Программа сама его выделяет
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
26.12.2015, 19:05
Цитата Сообщение от Loner95 Посмотреть сообщение
Программа сама его выделяет
Ну я про это и говорю, обратите внимание, какая строчка добавилась в код.

Программа сама выделять ничего не может, все, что она делает - программируете Вы, поэтому к Вам и обращение, а не к программе
1
0 / 0 / 0
Регистрация: 05.12.2015
Сообщений: 24
26.12.2015, 19:30  [ТС]
Цитата Сообщение от Памирыч Посмотреть сообщение
Ну я про это и говорю, обратите внимание, какая строчка добавилась в код.
Программа сама выделять ничего не может, все, что она делает - программируете Вы, поэтому к Вам и обращение, а не к программе
Вот смотрите о чем я в данный момент говорю. Я видео залил на яндекс диск. качество не очень вышло записывал с телефона одной рукой))
смотрите внимательно за курсором "он сам прыгает на начало строки"
https://yadi.sk/i/RfNVDYh0mWRQS
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
26.12.2015, 19:47
Цитата Сообщение от Loner95 Посмотреть сообщение
качество не очень вышло
Главное, что оно не вертикальное.
Кто снимает вертикальные видео - попадают в топ ютуба по просмотрам, а так же в ад.

По вопросу - ну а чего Вы хотели? Этот код не рассчитан под набор текста в реальном времени.
Если Вы собрались писать редактор кода, то имхо, лучше поискать что-нибудь готовое.

В таком случае можно сделать кое-что:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    Dim HT As New Hashtable
    Dim CurPos As Integer
    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
 
 
        Dim Words_dont_come_easy As String = String.Join("|", HT.Keys.Cast(Of String).ToArray)
        Dim allIp As MatchCollection = Regex.Matches(RichTextBox1.Text, Words_dont_come_easy)
        CurPos = RichTextBox1.SelectionStart
        For Each ip As Match In allIp
            RichTextBox1.SelectionStart = ip.Index
            RichTextBox1.SelectionLength = ip.Length
            'RichTextBox1.SelectionBackColor = Color.Yellow
            RichTextBox1.SelectionColor = HT(ip.Value)
        Next
        RichTextBox1.SelectionLength = 0
        RichTextBox1.SelectionStart = curpos
        RichTextBox1.SelectionColor = Color.Black
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        HT.Add("Dim", Color.Red)
        HT.Add("String", Color.Blue)
        HT.Add("As", Color.Green)
        HT.Add("RichTextBox1", Color.Cyan)
    End Sub
Это все не стоит свеч
4
31 / 27 / 11
Регистрация: 15.07.2015
Сообщений: 85
28.12.2015, 11:39
Цитата Сообщение от Памирыч Посмотреть сообщение
Если Вы собрались писать редактор кода, то имхо, лучше поискать что-нибудь готовое.
Был, кстати, топик в готовых решениях "Подсветка синтаксиса как в редакторах.":
https://www.cyberforum.ru/post4862952.html
https://www.cyberforum.ru/post4924484.html
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.12.2015, 12:00
RoyDenzel, у Вас взлетел данный код?
У меня нет.
Надо его выпилить из фака, если он нерабочий
0
31 / 27 / 11
Регистрация: 15.07.2015
Сообщений: 85
28.12.2015, 12:03
Цитата Сообщение от Памирыч Посмотреть сообщение
RoyDenzel, у Вас взлетел данный код?
Потребности не было, не проверял, но из дальнейших постов, как я понял, все работает

Добавлено через 35 секунд
Памирыч,
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.12.2015, 12:04
Если кто-то проверит - отпишитесь, пожалста. Будем посмотреть
0
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
23.12.2019, 10:51
Памирыч, Приветствую!
Воспользовался Вашим примером для себя:
VB.NET
1
2
3
4
5
6
7
8
9
10
Dim Words_dont_come_easy As String = "Status...........: Cracked"
        Dim allIp As MatchCollection = Regex.Matches(RichTextBox1.Text, Words_dont_come_easy)
        For Each ip As Match In allIp
            RichTextBox1.SelectionStart = ip.Index
            RichTextBox1.SelectionLength = ip.Length
            RichTextBox1.SelectionBackColor = Color.DarkGreen
            RichTextBox1.SelectionColor = Color.Yellow
            RichTextBox1.SelectionFont = New Font(RichTextBox1.Text, 10, FontStyle.Bold)
        Next
        RichTextBox1.ScrollToCaret()
Всё хорошо работает, но есть одна загвоздка, подскажите, пожалуйста, как ограничить редактирование искомого текста?
Дело в том, что у меня RichTextBox заполняется информацией согласно перехватываемого процесса, и данная процедура, закрашивает всё, что идёт после:
VB.NET
1
Dim Words_dont_come_easy As String = "Status...........: Cracked"
см. пример.
Или это проблема именно в заполняемом тексте, а точнее в его формате?

Спасибо.
Миниатюры
RichTextBox. Изменения цвета текста выбранных слов  
0
Нарушитель
 Аватар для HACKER KAY
21 / 47 / 5
Регистрация: 03.06.2019
Сообщений: 368
Записей в блоге: 10
23.05.2020, 12:45
Памирыч, вы забыли испорт сделать) (К первому примеру)

VB.NET
1
Imports System.Text.RegularExpressions
0
19 / 19 / 0
Регистрация: 05.02.2015
Сообщений: 175
24.09.2020, 17:23
Всем привет.
Вопрос по сложнее, а если это не одно слово/текст, а слово сочитание? Например: Привед Медвед!
И нужно выделить цветом: Привед Медвед!
0
19 / 19 / 0
Регистрация: 05.02.2015
Сообщений: 175
25.09.2020, 10:49
Все оказалось проще, чем мне думалось
Создал процедуру ChangeTextRTB и вызываю ее таким образом:
VB.NET
1
ChangeTextRTB(RTB1, "Привед Медвед!"), Color.Blue, New Font("Microsoft Sans Serif", 8, FontStyle.Regular))
ChangeTextRTB
VB.NET
1
2
3
4
5
    Public Sub ChangeTextRTB(RTB As RichTextBox, text As String, color As Color, font As Font)
        RTB.Select(RTB.Text.IndexOf(text), text.Length)
        RTB.SelectionFont = font
        RTB.SelectionColor = color
    End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2020, 10:49
Помогаю со студенческими работами здесь

разные цвета текста в richTextBox
Имеется массив строк, рассплиттеных с rtf по знаку абзаца. Я хочу закинуть этот массив в richTextBox, причем нужно что бы была такая...

Замена цвета текста в richTextBox
мне нужно открыть 2 файла и отличие выделить красным цветом, я это делаю так for (x = 0; x < s.SamMal(f1, f2); x++) ...

Вставка текста красного цвета RichTextBox
Надо сделать так, чтобы вставлялся красный текст, а далее все опять становилось черным.. Если нажимать вручную обе кнопки по очереди,...

Подчеркивание, смена цвета текста в richtextbox программно
Доброго времени суток всем, столкнулся с надобностью как-то выделить текст в rtb програмно, и не весь а отдельные слова допустим (что-то...

Изменения цвета текста
in RichEdit


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru