С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/43: Рейтинг темы: голосов - 43, средняя оценка - 4.77
11 / 3 / 0
Регистрация: 03.05.2012
Сообщений: 48

Разноцветные строки в RichTextBox

31.05.2012, 02:45. Показов 8767. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно, чтобы каждая строка писалась своим цветом. Как это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2012, 02:45
Ответы с готовыми решениями:

RichEdit и разноцветные строки
Есть список в RichEdit. он уже создан. В цикле нужно перебирать стрки и проводить с ними некоторые операции. И в процессе цикла нужная...

Разноцветные строки таблицы
Нужна помощь, подскажите пожалуйста, как добавить случайный цвет для каждой строки генерируемой таблицы? Таблица генерируется так : echo...

Разноцветные строки в ComboBox
Добрый день. Есть необходимость что бы в момент выбора строки в ComboBox, эти самые строки были разных цветов. Например комбо содержит: ...

14
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
31.05.2012, 04:09
Такс, по порядку.
1.Создадим в форме метод для генерации цвета Color
Method
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
public Color generateRandomColor()
        {
            Thread.Sleep(10);
            Color color = new Color();
            Random a = new Random();
            switch( a.Next(0, 10))
            {
                case 0:
                        color = Color.Red;
                        break;
                case 1:
                        color = Color.Blue;
                        break;
                case 3:
                        color = Color.Cyan;
                        break;
                case 4:
                        color = Color.Green;
                        break;
                case 5:
                        color = Color.Yellow;
                        break;
                case 6:
                        color = Color.Violet;
                        break;
                case 7:
                        color = Color.Black;
                        break;
                case 8:
                        color = Color.Gray;
                        break;
                case 9:
                        color = Color.Gold;
                        break;
                case 10:
                        color = Color.Purple;
                        break;
            }
            return color;
            }//генерируем цвет

2. Создадим второй метод, который будет вызывать 1й метод для перекраски каждой строки
Метод
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void ChangeColor() 
        {
            int f = 0;
            int s = richTextBox1.Lines[0].Length;
            try
            {
                for (int i = 0; i < richTextBox1.Lines.Length; i++)
                {
                    richTextBox1.Select(f, s);//английский учиш?
                    richTextBox1.SelectionColor = generateRandomColor();//вызываем метод, который генерирует цвет
                    f = s;
                    s += richTextBox1.Lines[i + 1].Length + 1;
                }
            }
            catch (Exception)
            {
 
            }
           
        }

3. Создаем всем известный richTextBox и кнопку Button, на которой организуем событие, которое вызовет метод перекраски строк.
Клац
C#
1
2
3
4
private void button1_Click(object sender, EventArgs e)
        {
            ChangeColor();
        }

4.Если лень проделывать столь сложные действия, скачать проект в прикрепленных файлах.
5.Нажать спасибо под прочитанным сообщением. Автору етого будет приятно
Вложения
Тип файла: rar Цвет текста richTextbox.rar (39.8 Кб, 59 просмотров)
7
11 / 3 / 0
Регистрация: 03.05.2012
Сообщений: 48
31.05.2012, 17:37  [ТС]
Спасибо, конечно, но я так уже делал. Вы немного не поняли суть. Я пишу чат. Мне нужно, чтобы при появлении сообщения, оно перекрашивалось в свой цвет.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            //ChatBox - RichTextBox
            Random R = new Random();
            Color Col = new Color();
 
            switch (R.Next(10))
            {
                case 0: { Col = Color.Aqua; break; }
                case 1: { Col = Color.Red; break; }
                case 2: { Col = Color.Green; break; }
                case 3: { Col = Color.Gray; break; }
                case 4: { Col = Color.Black; break; }
                case 5: { Col = Color.Pink; break; }
                case 6: { Col = Color.Yellow; break; }
                case 7: { Col = Color.Violet; break; }
                case 8: { Col = Color.Brown; break; }
                case 9: { Col = Color.Blue; break; }
            }
 
            string News = "[User][00:00:00]: потому была она.\n";
            ChatBox.Text += News;
            ChatBox.SelectionStart = ChatBox.Text.Length - News.Length;
            ChatBox.SelectionLength = News.Length;
            ChatBox.SelectionColor = Col;
Код работает не правильно. Почему-то когда появляется новое сообщение, то строка этого сообщения перекрашивается правильно, но дополнительно перекрашиваются все предыдущие строки в цвет самой первой строки. Бред...
0
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
31.05.2012, 18:19
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void SetColorOnLastMessage()
        {
            int f = 0;
            int s = richTextBox1.Lines[0].Length;
            for (int i = 0; i < richTextBox1.Lines.Length-1; i++)
            {
                f = s;
                s += richTextBox1.Lines[i + 1].Length + 1;
            }
            richTextBox1.Select(f, s);
            richTextBox1.SelectionColor = generateRandomColor();
        }
Красит последнюю строчку richTextBox1
Если я правильно понял, то ето именно то что тебе надо а 1й пост делал для того, что бы разобраться
2
11 / 3 / 0
Регистрация: 03.05.2012
Сообщений: 48
31.05.2012, 21:43  [ТС]
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
        private void SetColorOnLastMessage()
        {
            Random R = new Random();
            Color Col = new Color();
 
            switch (R.Next(10))
            {
                case 0: { Col = Color.Aqua; break; }
                case 1: { Col = Color.Red; break; }
                case 2: { Col = Color.Green; break; }
                case 3: { Col = Color.Gray; break; }
                case 4: { Col = Color.Black; break; }
                case 5: { Col = Color.Pink; break; }
                case 6: { Col = Color.Yellow; break; }
                case 7: { Col = Color.Violet; break; }
                case 8: { Col = Color.Brown; break; }
                case 9: { Col = Color.Blue; break; }
            }
 
            int f = 0;
            int s = ChatBox.Lines[0].Length;
            for (int i = 0; i < ChatBox.Lines.Length - 1; i++)
            {
                f = s;
                s += ChatBox.Lines[i + 1].Length + 1;
            }
            ChatBox.Select(f, s);
            ChatBox.SelectionColor = Col;
        }
 
        private void SendButton_Click(object sender, EventArgs e)
        {
            ChatBox.Text += "Сообщениe!" + Environment.NewLine;
            SetColorOnLastMessage();
        }
Так вообще не красит. Нужно покрасить последнюю строку, сохранив цвет предыдущих строк.
0
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
31.05.2012, 22:44
моя программа именно ето и делает, вот проект. ЛЕвая кнопка красит последнюю строку, оставляя цвет предыдущих, правая - красит весь текст в разные цвета/
Вложения
Тип файла: rar Цвет текста richTextbox.rar (41.9 Кб, 57 просмотров)
3
11 / 3 / 0
Регистрация: 03.05.2012
Сообщений: 48
31.05.2012, 23:33  [ТС]
Ваш пример работает как надо, но сделать так, чтобы после нажатия кнопки "Перекрасить последнюю" в RichTextBox сначала добавлялась новая строка, а потом она перекрашивалась, я почему-то не могу. Перекрашивается еще и все, что было до нее, хотя добавляю всего 1 строку: richTextBox1.Text+="\nстрока";
0
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
31.05.2012, 23:45
Блин, для него стараешся, а ему нажать спасибо сложно ехх.. печально..
ты после того, как добавиш текст, вызови метод, он перекрасит.
Метод
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void SetColorOnLastMessage()
        {
            int f = 0;
            int s = richTextBox1.Lines[0].Length;
            for (int i = 0; i < richTextBox1.Lines.Length-1; i++)
            {
                f = s;
                s += richTextBox1.Lines[i + 1].Length + 1;
            }
            richTextBox1.Select(f, s);
            richTextBox1.SelectionColor = generateRandomColor();
        }

Если не можеш сделать как написано выше, нажми на richTextBox1 2 раза, и в создавшемся событии пропиши строчки.
Строчки
C#
1
2
3
4
5
6
7
8
9
 int f = 0;
            int s = richTextBox1.Lines[0].Length;
            for (int i = 0; i < richTextBox1.Lines.Length-1; i++)
            {
                f = s;
                s += richTextBox1.Lines[i + 1].Length + 1;
            }
            richTextBox1.Select(f, s);
            richTextBox1.SelectionColor = generateRandomColor();


Добавлено через 57 секунд
или там же, где у тебя добовляеться строчка, в коде, припиши вызов етого метода, он перекрасит:\
Вот так
C#
1
2
3
 
richTextBox1.Text+="\nстрока";
SetColorOnLastMessage()


Добавлено через 3 минуты
Или вообще сделай так.
Метод с параметром новой строки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void SetNewMessage(string msg)
        {
            richTextBox1.Text+="\n"+msg;
            int f = 0;
            int s = richTextBox1.Lines[0].Length;
            for (int i = 0; i < richTextBox1.Lines.Length-1; i++)
            {
                f = s;
                s += richTextBox1.Lines[i + 1].Length + 1;
            }
            richTextBox1.Select(f, s);
            richTextBox1.SelectionColor = generateRandomColor();
        }

потом в коде вместо той строчки, которую ты написал в предыдущем сообщении, напиши
C#
1
SetNewMessage("Ето сообщение будет перекрашено");
Добавлено через 1 минуту
или скинь мне уже проект, я тебе сам напишу, ахах
2
11 / 3 / 0
Регистрация: 03.05.2012
Сообщений: 48
31.05.2012, 23:45  [ТС]
Пролайкал все сообщения )

Дописал:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button2_Click(object sender, EventArgs e)
        {
            richTextBox1.Text += "\nНовая строка!";
            richTextBox1.Refresh();
 
            int f = 0;
            int s = richTextBox1.Lines[0].Length;
            for (int i = 0; i < richTextBox1.Lines.Length-1; i++)
            {
                f = s;
                s += richTextBox1.Lines[i + 1].Length + 1;
            }
            richTextBox1.Select(f, s);
            richTextBox1.SelectionColor = generateRandomColor();
        }
Итог:
Вложения
Тип файла: rar Цвет текста richTextbox.rar (4.4 Кб, 46 просмотров)
2
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
01.06.2012, 00:06
Молодцом)
1
11 / 3 / 0
Регистрация: 03.05.2012
Сообщений: 48
01.06.2012, 00:20  [ТС]
Ты лучше с перекраской помоги. Все, что ты мне присылал у меня уже было в более простой форме.
(Проблема в прошлом сообщении)
0
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
01.06.2012, 00:21
у меня не строит твой фрейм ворк, кидай проект
2
11 / 3 / 0
Регистрация: 03.05.2012
Сообщений: 48
01.06.2012, 00:24  [ТС]
Я на втором делаю, он почти у всех стоит.
Вложения
Тип файла: rar Rich.rar (47.4 Кб, 34 просмотров)
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
01.06.2012, 10:15
4Dragon, ошибка в одной строке:
C#
1
ChatBox.Text += News;
Именно поэтому сбивается покраска. Заменить на
C#
1
ChatBox.AppendText(News);

Goal, смотри правила форума пункт 3.9.
1
11 / 3 / 0
Регистрация: 03.05.2012
Сообщений: 48
01.06.2012, 17:46  [ТС]
Green, огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2012, 17:46
Помогаю со студенческими работами здесь

Treeview разноцветные строки
Как в treeview сделать строки разного цвета delphi 10.1 android. Где обрабатывать? TreeView1CustomDrawItem нет.

Как сделать разноцветные строки в ComboBox?
Народ, помоготие, плз. Как сделать цвет строк в ComboBox разного цвета?

Разноцветные строки в форме списка (тонкий клиент)
Здравствуйте, уважаемые. Не нашел нужной инфы в нэте, может быть кто-то сталкивался с подобной проблемой. Хочу реализовать разноцветные...

Строки в Richtextbox
Подскажите пожалуйста код, чтобы менять содержимое (текст) определенной строки в richtextbox. Заранее спасибо! )

richTextBox фон строки
richTextBox. Как поменять фон целой строки (Lines) зная ее номер строки?


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru