Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
20 / 16 / 6
Регистрация: 17.01.2013
Сообщений: 247
.NET 3.x

Выделить строку в RichTextBox

23.12.2019, 13:21. Показов 1396. Ответов 1

Студворк — интернет-сервис помощи студентам
Товарищи, приветствую.
На форуме нашёл интересное решение по поиску и выделению строки в RichTextBox.

Подскажите, пожалуйста, каким образом можно объединить эти способы в одну процедуру, к примеру в RichTextBox1_TextChanged

Поиск текста и его редактирование происходит так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
 Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
        Dim Words_dont_come_easy As String = "INFO:"
        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()
End Sub
Решил засунуть сюда же поиск номера строки искомого слова, получилось так: (работает)
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
        Dim Words_dont_come_easy As String = "INFO:"
        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()
        Dim numChr As Integer = RichTextBox1.SelectionStart
        Dim nn, nRow As Integer
        For i = 0 To RichTextBox1.Lines.Length - 1
            nn += RichTextBox1.Lines(i).Length
            If numChr < nn Then
                nRow = i
                Exit For
            End If
        Next
        TextBox2.Text = nRow
    End Sub
(не знаю, правильно ли сделано, если нет, дайте подсказку как правильно оформлять такие сложные процедуры)

и теперь осталось выделить строку, в которой находим слово, в теме, которую указал выше, есть решение:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Button7_Click(sender As System.Object, e As System.EventArgs) Handles Button7.Click
    Dim nn As Integer = NumericUpDown1.Value
    If nn > RTB1.Lines.Length - 1 Then Exit Sub
    Dim zz As Integer
    If nn > 0 Then
        For i = 0 To nn - 1
            zz += RTB1.Lines(i).Length + 1
        Next
    End If
    RTB1.SelectionStart = zz
    RTB1.SelectionLength = RTB1.Lines(nn).Length
    RTB1.Select()
End Sub
но хотелось бы кнопку не нажимать, а чтобы обрабатывалось всё автоматом.
за ранее большое спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2019, 13:21
Ответы с готовыми решениями:

Выделить строку в RichTextBox по ее номеру
На форме RichTextBox (при загрузке формы, в нем написан текст),TextBox и Button. 1. Как при вводе числа в TextBox (вводим число, номер...

Как программно выделить слово в RichTextBox
Доброго времени суток! Допустим есть предложение &quot;Ваш код работает, глюков вроде никаких.&quot; в ричтекстбоксе. Как программно...

Как выделить совпадения в RichTextBox без скролла?
Есть задача: при выделении мышей слова или части слова в RichTextBox, искать совпадения и выделять их все, скажем, оранжевым фоном. За...

1
3259 / 3282 / 556
Регистрация: 17.02.2019
Сообщений: 5,193
06.01.2020, 14:54
rebell,

попробуй не кнопкой а функцией

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Function Выделение()
Dim nn As Integer = NumericUpDown1.Value
    If nn > RTB1.Lines.Length - 1 Then Exit Sub
    Dim zz As Integer
    If nn > 0 Then
        For i = 0 To nn - 1
            zz += RTB1.Lines(i).Length + 1
        Next
    End If
    RTB1.SelectionStart = zz
    RTB1.SelectionLength = RTB1.Lines(nn).Length
    RTB1.Select()
Return Me
    End Function
А вызвать в любом месте

VB.NET
1
Выделение()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.01.2020, 14:54
Помогаю со студенческими работами здесь

Выделить жирным шрифтом текст в RichTextBox находящийся между тегов <b>
Все наверное знают, что есть такой HTML тег: &lt;b&gt;Текст&lt;/b&gt; Текст находящийся между данным тегом становится Bold, т.е. выделен жирным...

Получить строку RichTextBox
Привет, мой друг. :) Помогите мне спарсить строки из RichTextBox1.text, он разделены vbCrLf (т.е начинаются с новой строки) Как мне...

Удалить конкретную строку из RichTextBox
Всем добра друзья. Мне надо удалить конкретную строку из RichTextBox (например. richtextbox.lines(5)). уже как пару часов насилую гугл,...

Удалить последнюю строку в RichTextBox
Всем здравствуйте. RichTexBox заполняется в цикле таймера строками: ..... 2222222222 1111111111 0000000000 Public Class...

Как перейти на нужную строку в RichTextBox?
Наверно, другими словами переместить указатель.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru