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

RichTextBox как раскрывать теги

17.03.2014, 02:43. Показов 1454. Ответов 3
Метки нет (Все метки)

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

Есть, например, строка такого вида
string str = "слово1<br><i>слово2</i><br>слово3";

Как этот текст вывести в RichTextBox с учетом требований тегов? (перевод каретки и второе слово под наклоном)

Должно получится
слово1
слово2
слово3
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2014, 02:43
Ответы с готовыми решениями:

Как запретить раскрывать форму на весь экран?
Как запретить раскрывать форму на весь экран?

Как это называется и как сделать. Теги, комбо, комбо-теги?
Мужики, доброго дня. Суть: Есть абзац текста. Я его делю на предложения. Далее каждое предложение нужно красиво вывести как показано в...

Раскрывать выпадающий список (ComboBox) автоматически, если в нем есть значение
Всем привет, народ подскажите как сделать так, чтоб выпадающий список(comboBox) раскрывался автоматически, если в нем есть значение???

3
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
19.03.2014, 01:13
Лучший ответ Сообщение было отмечено Андрей69 как решение

Решение

Андрей69,

Так можно тансформировать участки между тегами в RichTextBox-е как угодно

C#
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
namespace Tags
{
    public partial class Form1 : Form
    {
        // строка, которую необходимо преобразовать согласно тегам.
        string str = @"A <br>[eı] <i>n (pl As, a's, as</i> [eız]<i>)</i> <br>1.<b>1-я буква английского алфавита </b><br>2.(A) высшая отметка, «отлично»  <br>an A in history - «отлично» по истории  <br> straight A - круглое «отлично»  <br>3. первый номер по порядку  <br>company A in an infantry battalion - первая рота пехотного батальона  <br> 4. <i>редк. </i>кнопка телефона-автомата (<i>используется при междугородной связи в Великобритании</i>)  <br>5. <i>несовр. </i> <br>1) кинофильм, на который дети и подростки допускаются только в сопровождении взрослых  <br>2) фильм только для взрослых  <br>6. предмет высшего сорта, класса <i>и т. п. </i> <br>grade A flour - мука высшего сорта  <br>7. 1) малая полнота обуви  <br>2) первый <i>или</i> второй номер бюстгальтера  <br>8. <i>полигр. </i>буква <i>или</i> литера A <i>или </i>a  <br>9. группа крови A  <br>10. (a) <i>мат. </i>a (<i>обозначение известного числа</i>)  <br>11. <i>муз. </i>ля  <br>12. <i>в грам. знач. прил. </i>(<i>тж. как компонент сложных слов</i>)(A) имеющий форму буквы А; А-образный  <br>A-frame - <i>тех. </i>А-образная опора  <br>A-line - трапециевидный (<i>о юбке, силуэте одежды и т. п.</i>)  <br><i> ♢ </i>from A to Z - от альфы до омеги, от а до я; с самого начала до самого конца  <br>to know smth. from A to Z - ≅ знать что-л. как свои пять пальцев; знать что-л. в совершенстве  <br>from A to B - из точки A в точку B  <br>not to know A from B - ≅ не знать (аза в глаза); быть невежественным /неграмотным/";
 
 
        public Form1()
        {
            InitializeComponent();
            richTextBox1.Text = str;
        }
 
        private void Operation(RichTextBox richTextBox, Object operation)
        {
            Font font = richTextBox.SelectionFont;
            if (operation is Color) richTextBox.SelectionColor = (Color)operation;
            if (operation is FontStyle) richTextBox.SelectionFont = new Font(font, (FontStyle)operation);
            if (operation is Int32) richTextBox.SelectionFont = new Font(font.Name, (int)operation, font.Style);
            if (operation is String) richTextBox.SelectionFont = new Font((string)operation, richTextBox.SelectionFont.Size, font.Style);
        }
 
       // преобразовать весь текст
        private void ConvertingTextBetweenTags(RichTextBox richTextBox, string Tag, params Object[] operation)
        {
            if (Tag.ToLower() == "<all>")
            {
                richTextBox.Text = richTextBox.Text; //превращаем rtf формат (если текущим будет он) обратно в текстовой, иначе не сработает richTextBox.Select
                richTextBox.Select(0, richTextBox.Text.Length);
 
                for (int i = 0; i < operation.Length; i++)
                    Operation(richTextBox, operation[i]);
            }
        }
 
        // Преобразовать текст, согласно тегам
        private void ConvertingTextBetweenTags(RichTextBox richTextBox, string openingTag, string closingTag, params Object[] operation)
        {
            int startPos = 0;
            int endPos = 0;
 
            richTextBox.Rtf = richTextBox.Rtf.Replace("<br>", @"\par ");//  перенос строк заданный тегом <br>
 
            // обрабатываем остальные указанные теги
            for (int i = 0; i < operation.Length; i++)
            {
                bool END = false;
                while (!END)
                {
                    startPos = richTextBox.Text.IndexOf(openingTag, startPos);
 
                    if (startPos != -1)
                        endPos = richTextBox.Text.IndexOf(closingTag, startPos);
 
                    if (startPos != -1 & endPos != -1)
                    {
                        richTextBox.Select(startPos, endPos - startPos + closingTag.Length);
                        Operation(richTextBox, operation[i]);
                        startPos = endPos;
                    }
                    else
                        END = true;
                }
                startPos = 0;
            }
 
            richTextBox.Select(0, 0);// снимаем выделение текста
            richTextBox.Rtf = richTextBox.Rtf.Replace(openingTag, "").Replace(closingTag, ""); // теперь удаляем  использованные теги из текста
        }
 
 
        // раскрытие тегов (после выполнения метода соответствующие теги будет удалены из текста)
        private void button2_Click(object sender, EventArgs e)
        {
            // в методе ConvertingTextBetweenTags жесткое положение имеют только аргументы richTextBox и теги.
            // остальные аргументы могут быть любыми (относящиеся к работе с текстом), в любом количестве и в любой последовательности
 
            ConvertingTextBetweenTags(richTextBox1, "<i>", "</i>", "Mistral", 15, Color.Red, FontStyle.Italic);// работа с текстом между тегами <i>" и "</i>
            ConvertingTextBetweenTags(richTextBox1, "<b>", "</b>", FontStyle.Bold, Color.Purple); // работа с текстом между тегами <b> и </b> 
 
            // и т.п.
 
 
            if (Flag) MessageBox.Show("Тегов уже нет. Текст нельзя преобразовать");
            if (Flag == false) Flag = true;
        }
 
 
 
        bool Flag = false;
 
        // задать нужные свойства всему тексту разом
        private void button1_Click(object sender, EventArgs e)
        {
            ConvertingTextBetweenTags(richTextBox1, "<All>", Color.Purple, "Cambria");
        }
 
        //восстановление исходного текста
        private void button3_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = str;
            ConvertingTextBetweenTags(richTextBox1, "<All>", Color.Black, "Microsoft Sans Serif", 8);
            Flag = false;
        }
    }
}
Скинул файл. Смотри.
Вложения
Тип файла: rar Tags.rar (30.9 Кб, 10 просмотров)
1
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
19.03.2014, 01:18
Если что не так, дайте образец вашего текста.
1
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100
19.03.2014, 23:18  [ТС]
Евгений В,
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2014, 23:18
Помогаю со студенческими работами здесь

При любой смене размера richTextBox-а растянуть текст на весь richTextBox
есть richTextBox нужно вывести текст и при любой смене размера richTextBox растянуть этот текст на весь richTextBox. текст может быть любой...

Специальные символы в RichTextBox не учитываются при передаче в другой RichTextBox
Если мы зададим richTextBox1.Text = &quot;123\n123&quot;; мы увидим 123 123 но если мы зададим этот же текст из другого...

Как раскрывать подкаталог программ при наведении?
Здравствуйте! 1) Скажите, есть ли возможность в меню &quot;Пуск&quot; Windows 7 настроить раскрытие состава подкаталогов программ при наведении на...

Как запретить по нажатию кнопки раскрывать Combobox?
Всем привет!!! На форме есть кнопка и комбобоксы. В комбобоксах выбрали значения. Как запретить по нажатию кнопки раскрывать комбобоксы??? ...

Масштабирование или как автоматически раскрывать форму на весь экран при запуске?
Здравствуйте! Нужна помощь: при запуске форма открывается так, как показано на скриншоте, то есть практически ничего не видно. Конечно,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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 с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru