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

Вставка строки с другим шрифтом в RichTextBox

09.09.2013, 04:42. Показов 2299. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня есть текст в котором,например, слово "дата" начинается со строки "StartDate", мне необходимо заменить слово "дата" на тоже самое, но с другим шрифтом, и удалить строку StartDate, "дата может встречаться известное кол-во раз", как менять шрифт знаю, все получилось, но индексы как-то хаотически смещаются. Спасибо)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2013, 04:42
Ответы с готовыми решениями:

Как сделать первые три строки текста в RichTextBox полужирным шрифтом
Как сделать первые три строки текста в RichTextBox полужирным шрифтом?

Можно ли вставить подсказку (другим шрифтом) в TextBox
Здравствуйте! Можно ли расширить класс TextBox, чтобы добавить туда для отображения подсказки, которая будет отображаться серым цветом? ...

Текст с разным шрифтом, размером и жирностью в RichTextBox
Всем привет. Говоря проще, задача такая: Есть строка: string s = "Белки: обычные животные \nЕдинороги: необычные животные"; ...

9
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
09.09.2013, 09:11
Цитата Сообщение от StarDen Посмотреть сообщение
Здравствуйте, у меня есть текст в котором,например, слово "дата" начинается со строки "StartDate", мне необходимо заменить слово "дата" на тоже самое, но с другим шрифтом, и удалить строку StartDate, "дата может встречаться известное кол-во раз", как менять шрифт знаю, все получилось, но индексы как-то хаотически смещаютс
Чтобы ответить на твой вопрос нужно на код посмотреть, как минимум...
Насчет индексов у меня недавно была проблема с вставкой текста, решил её другим способом вставки, вот посмотри здесь.
0
5 / 5 / 0
Регистрация: 21.10.2012
Сообщений: 101
09.09.2013, 14:21  [ТС]
aleks_pilipenko, метод из класса загрузки сообщений
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
 public void LoadMessage(string hostname, int port, bool useSsl, string username, string password, int messageNumber)
        {
 
            // The client disconnects from the server when being disposed
            using (Pop3Client client = new Pop3Client())
            {
                // Connect to the server
                client.Connect(hostname, port, useSsl);
 
                // Authenticate ourselves towards the server
                client.Authenticate(username, password);
              
             
                // We want to check the headers of the message before we download
                // the full message
                  MessageHeader headers;
            mess_count =  client.GetMessageCount();
                
                //RfcMailAddress from = headers.From;
                //string subject = headers.Subject;
 
                // Only want to download message if:
                //  - is from [email]test@xample.com[/email]
                //  - has subject "Some subject"
                //if (from.HasValidMailAddress && from.Address.Equals("mail@mail.ru") && "Program".Equals(subject))
                {
 
                    int bugs = 0; progr = 0;
                    pos = new int[mess_count];
                    // Download the full message
                    for (int i = 1; i < mess_count; i++)
                    {
                        
                        OpenPop.Mime.Message message = client.GetMessage(i);
                        headers = client.GetMessageHeaders(i);
                        try
                        {
                            pos[i] = s.Length;
                            s += "    StartDate Дата\n      ";
                            pos[i] = s.Length+2;
                          // s += "12";
                            //MessageBox.Show(""+s[i]);
                                s+= headers.DateSent + " EndDate " + message.FindFirstPlainTextVersion().GetBodyAsText().ToString() + "\n\n\n---***---\n\n\n\n";
 
                        }
 
 
                        catch { bugs++; }
                        progr++;
                        stat_LB = "Загружено: " + i +" /из "+mess_count+ " сообщений"+"\n С ошибкой: "+ bugs;
                        
                        // We know the message contains an attachment with the name "useful.pdf".
                        // We want to save this to a file with the same name
                   
                    //foreach (MessagePart attachment in message.FindAllAttachments())
                    //{
                    //    if (attachment.FileName.Equals("useful.pdf"))
                    //    {
                    //        // Save the raw bytes to a file
                    //        File.WriteAllBytes(attachment.FileName, attachment.Body);
                    //    }
                    //}
                    }
 
                }
                 client.Disconnect();
            }
        }
метод из главного класса:
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
string mails = "";
        Font font_Date = new System.Drawing.Font("Times New Roman", 18, FontStyle.Bold);
        Font font_text = new System.Drawing.Font("Times New Roman", 14, FontStyle.Regular);
 
        private void Refresh_BT_Click(object sender, EventArgs e)
        {
            Refresh_BT.Enabled = false;
            richTextBox1.Text = "";
            //timer1.Enabled = true;
            
            mail.LoadMessage("pop3.mail.ru", 110, false, "mail@mail.ru", "1234567890", 4);
            progress();
            mails = mail.s;
 
            //выделение текста
 
            mailBox.Text = mails;
 
 
            int[] pos = mail.pos;// new int[mail.mess_count];
            try
            {
 
                for (int k = 0; k < mail.mess_count; k++)
                {
 
                    //  pos = mailBox.Text.IndexOfAny("StartDate".ToCharArray(0, 10), pos);
                    //mailBox.Text.IndexOfAny("EndDate".ToCharArray(0, 10), pos);
                    mailBox.Select(pos[k], 9);
                    mailBox.SelectionColor = Color.Red;
                    //  mailBox.Text = mailBox.Text.Remove(pos[k], 10);
 
                    mailBox.SelectionFont = font_Date;
 
                    try
                    {
                        // mailBox.SelectionStart = mailBox.Text.IndexOfAny("EndDate".ToCharArray(0, 10), pos);
 
                    }
                    catch { }
                    //   rb.Text.Replace(rb.SelectedText);
 
                    //mailBox.Text = mailBox.Text.Remove(pos + 30, 8);
                    //rb.SelectionFont = font_text;
                }
            }
            catch { }
            //MessageBox.Show("");
 
 
            //mailBox.Text = mailBox.Text.Replace("StartDate", "1");
 
            progressBar1.Maximum = mail.mess_count-1;
            progressBar1.Step = 1;
            progressBar1.Minimum = 0;
 
 
 
 
 
            mailBox.SelectionStart = mailBox.Text.Length;
            mailBox.ScrollToCaret();
 
            if (!splitContainer2.Panel2Collapsed)
                splitContainer2.Panel2Collapsed = true;
            Refresh_BT.Enabled = true;
            //timer1.Enabled = false;
            // Refresh_BT.Image = bitConst;
        }
код,конечно, трудно будет разобрать, пишу на скорую руку, но думаю это возможно)
0
5 / 5 / 0
Регистрация: 21.10.2012
Сообщений: 101
10.09.2013, 15:17  [ТС]
aleks_pilipenko, немного уточню: у меня есть массив индексов нахождения строк "StartDate", с помощью которого я выделяю эту строку в тексте, такой код
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
for (int i = 1; i < mess_count; i++)
                    {
                       
                        
                        OpenPop.Mime.Message message = client.GetMessage(i);
                        progr++;
                        headers = client.GetMessageHeaders(i);
                        try
                        {
                           
                          
                            str_test += "StartDate"; 
                           
                            str_test += " Дата\n      ";
                         
                            //MessageBox.Show(""+s[i]);
                            str_test += headers.DateSent + " EndDate " + message.FindFirstPlainTextVersion().GetBodyAsText().ToString() + "\n\n\n---***---\n\n\n\n";
                           pos[i] = str_test.LastIndexOf("StartDate");
                        }
 
 
                        catch { bugs++; }
                       
                     
                    }
                    s = str_test;
                }
работает когда просто сам добавляю строки в str_test,например(str_test+=(StarDate Дата 12345))
но когда загружаю сообщения с почты - индексы сдвигаются, первый - нормально а остальные нет,а вообще , в идеале нужно находить индексы "StarDate", выделять дату,и удалять все строки "StarDate",
нумерация скринов с конца
Миниатюры
Вставка строки с другим шрифтом в RichTextBox   Вставка строки с другим шрифтом в RichTextBox   Вставка строки с другим шрифтом в RichTextBox  

0
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
10.09.2013, 16:06
Я так понимаю, ты LastIndexOf применяешь для переменной типа Стринг, а выделяешь в richtextbox-е?
тогда конечно индекс смещается... Делай LastIndexOf для текста в richtextbox-е? в нем и выделяй...
0
5 / 5 / 0
Регистрация: 21.10.2012
Сообщений: 101
10.09.2013, 17:11  [ТС]
aleks_pilipenko, у меня в классе маил нельзя обратится к richtexbox, только из главного, просто делаю общую переменную и передаю ее значение richtextbox-у в главный класс, формирование текста я делаю в маил классе, тогда мне нужно загрузить уже отформатированный текст в ричтекстбокс и уже оттуда искать необходимый мне индекс?
0
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
10.09.2013, 17:58
Цитата Сообщение от StarDen Посмотреть сообщение
текст в ричтекстбокс и уже оттуда искать необходимый мне индекс?
конечно, я ведь об этом и написал...
По-моему есть возможность изменять текст формата rtf...
На самом деле текст в richtextbox хранится именно в этом формате...
Тогда, при добавлении все будет как надо, но, я думаю, что "дешевле" будет изменять текст уже добавленный...
1
5 / 5 / 0
Регистрация: 21.10.2012
Сообщений: 101
10.09.2013, 18:57  [ТС]
aleks_pilipenko, да, я это только-только доделал))) все работает, спасибо за помощь)

Добавлено через 11 минут
aleks_pilipenko, еще осмелюсь спросить, а почему так получается, что richtextbox.Text и string нельзя так использовать как я хотел вначале?
0
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
10.09.2013, 19:03
Цитата Сообщение от StarDen Посмотреть сообщение
richtextbox.Text и string нельзя так использовать как я хотел вначале
не могу сказать с большой уверенностью, могу посоветовать сделать отдельный проект(я всегда так делаю, когда что-то непонятно), потом добавить в Load формы добавление текста двумя способами, лучше даже в два ричтекстбокса... Если будет разница, то смотри по точке оставнова, что происходит с текстами... Тексты лучше брать как можно меньше, т.е. 3-4 символа вполне сойдет...
0
5 / 5 / 0
Регистрация: 21.10.2012
Сообщений: 101
10.09.2013, 19:12  [ТС]
aleks_pilipenko, спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.09.2013, 19:12
Помогаю со студенческими работами здесь

RichTextBox: некоторые буквы выделить курсивом, а другие - полужирным шрифтом
как мне сделать так, чтобы в RishTextBox некоторые буквы были выделены курсивом, а другие полужирны. Чтобы я ввёл rishTextBox.Text +=...

Цвет слова в строке другим цветом (richTextBox)
Всем привет! :) Уже ну пряяям кучу всего облазил и никак не могу найти нормального ответа. Есть у меня richTextBox, в котором есть...

При нажатии button текст файл открывался одним за другим через richtextbox
Как открыть текстовый файл, чтобы при нажатии button текст файл открывался одним за другим через richtextbox? Код выбора .txt ...

Программная вставка текста в richTextBox
Всем доброе время суток, есть следующий код: private void textBox1_TextChanged(object sender, EventArgs e) { ...

RichTextBox. Вставка изображений и работа с документом.
Два вопроса: а) Как вставлять в текст изображения. б) Как сканировать набранный документ. Допустим, мне нужно сохранить документ в виде...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru