Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 31.05.2020
Сообщений: 6

Подчеркивание выделенного текста в RichTextBox

01.02.2021, 20:19. Показов 3339. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я делаю текстовый редактор который может выполнять Валидацию кода xml. Дело в том что, при выполнении условия строка с неправильным кодом должна подчеркиваться красным цветом, но он либо не подчеркивается либо подчеркивается частично, причем начало подчеркивания находится далеко от начала строки. Так же иногда происходит исключения выхода за пределы массива
Вот сам код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//кнопка в которой происходит валидация
 
private void validationButton_Click(object sender, EventArgs e)
        {
            string imageTagStr = "<image name=\" \" src=\"\" x=\" \" y=\"\" width=\" \" height=\" \" size=\" \" rotate=\" \" flip-x=\" \" flip_y=\" \" />\n";
            richTB.Text = imageTagStr
            try
            {
                for (int i = 0; i < richTB.Lines.Count() - 1; i++)                        // в этом цикле происходит перебор коллекции строк
                {
                    if ( ! richTB.Lines[i].ToString().Contains(imageTagStr))            // условие в котором проверяется содержание в строке RichTextBox другой строки
                    {
                        richTB.Select(richTB.Lines[i].ToString()[0], richTB.Lines[i].ToString().Length - 1);     // в этой строке происходит исключение
                        richTB.SelectionFont = new Font(richTB.SelectionFont, FontStyle.Underline);
                        richTB.SelectionColor = Color.Red;
                    }
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString());
            } 
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.02.2021, 20:19
Ответы с готовыми решениями:

Работа с RichTextBox, форматирование выделенного текста
Доброго времени суток! Имеется RichTextBox, необходимо, чтобы по клику по иконке на панели управления выделенный текст становился...

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

Как в RichTextBox изменить цвет выделенного фрагмента текста?
пожалуйста вами как сделать копировать цвет? посмотреть исправить уже не нашел не получить :cry:

4
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
02.02.2021, 08:57
Лучший ответ Сообщение было отмечено aby59 как решение

Решение

aby59, Потому что, при выполнение такого кода
C#
1
richTB.Lines[i].ToString()[0];
вы получаете номер символа и за этого у вас строка не выделяется полностью, поскольку символ <=числу 60, вот и начала выделение происходит с 60 символа. Да и исключение могло бить и за того, что длинна строки меньше, а индекс стартового выделения больше.
1
1 / 1 / 0
Регистрация: 31.05.2020
Сообщений: 6
02.02.2021, 18:15  [ТС]
А почему индекс должен быть меньше или равен 60? Символов в строке всего 100. Не совсем понимаю, простите
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
02.02.2021, 18:40
Лучший ответ Сообщение было отмечено aby59 как решение

Решение

Цитата Сообщение от aby59 Посмотреть сообщение
А почему индекс должен быть меньше или равен 60? Символов в строке всего 100. Не совсем понимаю, простите
Ну так вы вызываете метод Select, где есть 2-ве перегрузки (Начальный индекс выделения, длинна выделения). Затем вы указываете
C#
1
2
                     //Здесь будет в ANSI, значение 60               //а тут длинна
richTB.Select(richTB.Lines[i].ToString()[0],                              richTB.Lines[i].ToString().Length - 1);
Соответственно, начальная точка выделения начинается с 60 индекса. Вот и не получается выделить всю строку. Смотрите таблицу.
Миниатюры
Подчеркивание выделенного текста в RichTextBox  
1
1 / 1 / 0
Регистрация: 31.05.2020
Сообщений: 6
02.02.2021, 19:56  [ТС]
Как же все просто, спасибо, большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2021, 19:56
Помогаю со студенческими работами здесь

Изменить размер шрифта выделенного фрагмента текста в RichTextBox
Цвет выделенного фрагмента текста я меняю так: if (richTextBox.SelectionFont != null) { ...

Волнистое подчёркивание в RichTextBox
Подскажите как сделать Волнистое подчёркивание в RichTextBox, в моём случае у меня есть база слов, и текст, я сравниваю слова из базы с...

Подчеркивание даты в Richtextbox если дата встречается
Подскажите как это сделать?

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

Изменить стиль выделенного в RichTextBox текста
Здравствуйте! Подскажите, пожалуйста, как изменить стиль выделенного в RichTextBox текста? Спасибо большое за помощь! Добавлено...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru