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

Изменение шрифта в RichTextBox без изменения предыдущих настроек форматирования

11.04.2018, 16:00. Показов 2301. Ответов 0

Студворк — интернет-сервис помощи студентам
В общем я делаю текстовый редактор и проблема состоит в том, что я ставлю на разные куски текста разные стили шрифта и разные типы шрифта(например: одно слово - полужирный Arial, а другое - курсивный TimesNewRoman). Потом выделяю все измененные куски текста и меняю все выделенное на другой тип шрифта(например: Calibri) и у меня вылетает ошибка: System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." System.Windows.Forms.RichTextBox.Selecti onFont.get вернул null. А должно быть так, что бы изменился тип шрифта а до этого выбранные стили сохранились.

Вот код:

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
public void FatFont()
        {
            Font oldFont, newFont;
            oldFont = rtb.SelectionFont;
            if (oldFont.Bold == true & oldFont != null)
            {
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
            }
            else
            {
                newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);
            }
 
            rtb.SelectionFont = newFont;
            rtb.Focus();
        }
 
        public void ItalicsFont()
        {
            Font oldFont, newFont;
            oldFont = rtb.SelectionFont;
            if (oldFont.Italic == true & oldFont != null)
            {
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);
            }
            else
            {
                newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);
            }
 
            rtb.SelectionFont = newFont;
            rtb.Focus();
        }
 
        public void UnderlinedFont()
        {
            Font oldFont, newFont;
            oldFont = rtb.SelectionFont;
            if (oldFont.Underline == true & oldFont != null)
            {
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline);
            }
            else
            {
                newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline);
            }
 
            rtb.SelectionFont = newFont;
            rtb.Focus();
        }
 
        public void PickFont(NumericUpDown numeric, ComboBox cmb) // смена типа шрифта 
        {
            rtb.SelectionFont = new Font(cmb.Text, (int)numeric.Value, rtb.SelectionFont.Style);
            rtb.Focus();
        }
 
        public void FontUpDown(NumericUpDown numeric) // изменение размера шрифта
        {
            if (rtb.SelectionFont != null)
            {
                rtb.SelectionFont = new Font(rtb.SelectionFont.Name, (int)numeric.Value, rtb.SelectionFont.Style);
            }
            else
            {
                rtb.SelectionFont = new Font(rtb.Font.Name, (int)numeric.Value, rtb.SelectionFont.Style);
            }
 
            rtb.Focus();
        }
 
        public void LoadForm(NumericUpDown numeric, ComboBox cmb) // подгрузка шрифтов
        {
            foreach (FontFamily font in FontFamily.Families)
            {
                cmb.Items.Add(font.Name.ToString());
            }
 
            cmb.SelectedIndex = 0;
            rtb.Font = new Font(cmb.Text, (int)numeric.Value);
        }
Пробовал убирать из перегрузки new Font() - rtb.SelectionFont.Style, тогда все происходит без ошибок, но до этого выбранные стили шрифта не сохраняются. Я понимаю что rtb.SelectionFont.Style не может определить стиль у выделения, если разные куски этого выделения имеют разные стили, но хз что дальше делать. Пробовал еще закидывать в стак изменения стилей, а потом в смене типа шрифта присваивать rtb.SelectionFont верхний элемент стака, но тогда он возвращает только последние изменение стиля, но остальные не сохраняются:с
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2018, 16:00
Ответы с готовыми решениями:

Изменение размера шрифта текста с разными размерами шрифта в RichTextBox
Добрый вечер! Возникла такая проблема - в RichTextBox находится текст, размер которого мы можем изменять из ComboBox. Т.е выделяем фрагмент...

Изменения шрифта в RichTextBox
как программно изменить размер, стиль шрифта для richTextBox?

Изменения размера шрифта в richtextbox
Добрый вечер! Подскажите, как можно сделать, увеличение размера шрифта выделенного слова, а не всего текста, который находится в...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.04.2018, 16:00
Помогаю со студенческими работами здесь

Сохранение RichTextBox без форматирования
При сохранении: private void SaveAs_Click(object sender, EventArgs e) { RichTextBox rtb =...

Копирование в richtextbox из excel без форматирования
Здравствуйте! при копировании текста из экселя и вставке его в richtextbox текст виден как таблица (с табовыми разделителями даже при...

Сохранение из Richtextbox в БД, как текст без форматирования
Очень прошу помочь. На форме adodc и Richtextbox. Из базы берется текст, в нем подсвечиваются слова. При переходе на следующую запись в...

Изменение размера шрифта в RichTextBox
Столкнулся с проблемой. Надо изменить шрифт в RichTextBox1, но у него все свойства(Height, Size) помечены как ReadOnly и изменить их никак...

Изменение цвета и размера шрифта в RichTextBox
как можно изменить размет и цвет текста в richbox. Например у меня в combobox есть разные цвета и в другом combobox-е размер текста.. ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
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
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru