Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

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

Возникла небольшая проблема. Есть 3 кнопки: жирный, курсив и подчеркивание. При нажатии на каждый из них, автоматически меняется стиль выделенного текста. Проблема заключается в том, что к примеру после нажатия на "жирный" нажимаю на "курсив" и выделенный текст принимает стиль курсива и сбрасывает активный жирный. Перепробовал очень много способов. Максимум выходит применить одновременно 2 стиля, до 3 не доходит. Сразу скажу, что я пытался в условии задать на проверку одновременно 2 стиля. Условие не работает, программа не может понять какие стили выделены одновременно. Вот код.
private void bold_Click(object sender, EventArgs e) { if (ContentBox.SelectionFont.Style == FontStyle.Italic) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Bold | FontStyle.Italic); if (ContentBox.SelectionFont.Style == FontStyle.Underline) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Bold | FontStyle.Underline); if (ContentBox.SelectionFont.Style == FontStyle.Regular) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Bold); else ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Bold | FontStyle.Italic | FontStyle.Underline); ContentBox.Select(); }
private void italic_Click(object sender, EventArgs e) { if (ContentBox.SelectionFont.Style == FontStyle.Bold) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Italic | FontStyle.Bold); if (ContentBox.SelectionFont.Style == FontStyle.Underline) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Italic | FontStyle.Underline); if (ContentBox.SelectionFont.Style == FontStyle.Regular) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Italic); else ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Italic | FontStyle.Bold | FontStyle.Underline); ContentBox.Select(); }
private void underline_Click(object sender, EventArgs e) { if (ContentBox.SelectionFont.Style == FontStyle.Bold) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Underline | FontStyle.Bold); if (ContentBox.SelectionFont.Style == FontStyle.Italic) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Underline | FontStyle.Italic); if (ContentBox.SelectionFont.Style == FontStyle.Regular) ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Underline); else ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Underline | FontStyle.Bold | FontStyle.Italic); ContentBox.Select(); }
Скажите, как добиться того же результата что и в ворде?


Ответ

Почему бы вам не попробовать
private void bold_Click(object sender, EventArgs e) { ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Bold | ContentBox.SelectionFont.Style);
ContentBox.Select(); }
Или
private void bold_Click(object sender, EventArgs e) { ContentBox.SelectionFont = new Font(ContentBox.SelectionFont, FontStyle.Bold ^ ContentBox.SelectionFont.Style);
ContentBox.Select(); }

Комментариев нет:

Отправить комментарий