DreyerVorster Ответов: 2

Как изменить шрифт выделенного текста или всего текста в поле форматированного текста


Я работаю над текстовым редактором, и одна кнопка, которую я использую, - это изменить тип шрифта и размер всего текста в richtextbox, и если вы выберете что-то, только этот текст должен измениться с помощью fontDialog..Код, который у меня есть на данный момент, я могу выбрать текст и изменить стиль выбранного текста, а затем продолжить печатать с оригинальным типом шрифта, с которого я начал..мне просто нужна помощь с кодом, который я могу использовать, чтобы изменить весь текст, если ничего не выбрано/не подсвечено

Что я уже пробовал:

if (fontDialog1.ShowDialog() == DialogResult.OK & !String.IsNullOrEmpty(rtbText.Text))
{
                
  rtbText.SelectionFont = fontDialog1.Font;
}

2 Ответов

Рейтинг:
10

BillWoodruff

Я использовал это в прошлом; он обрабатывает случай all-selected так же, как и none-selected. И, при желании, вы можете сбросить выделение после изменения шрифта.

private void SetFont(RichTextBox rtbx, bool restoreselection = false)
{
    int selStart = rtbx.SelectionStart;
    int selLength = rtbx.SelectionLength;

    if (fontDialog1.ShowDialog() == DialogResult.OK)
    {
        if (selLength == 0) rtbx.SelectAll();

        rtbx.SelectionFont = fontDialog1.Font;

        if (restoreselection)
        {
            rtbx.Focus();
            rtbx.SelectionStart = selStart;
            rtbx.SelectionLength = selLength;
        }
    }
}


DreyerVorster

как использовать или реализовать SetFont?

BillWoodruff

'SetFont-это метод: вы вызываете его, передавая ссылку на RichTextBox и необязательный логический параметр, который будет контролировать, будет ли восстановлено удаление:

SetFont(myRichTextBox); / / выделение не восстановлено

SetFont(myRichTextBox, true); / / выбор восстановлен

DreyerVorster

Большое вам спасибо

Karthik_Mahalingam

5

Рейтинг:
0

Leo Chapiro

Вы можете выделить весь текст перед изменением SelectedFont:

rtbText.SelectAll();
rtbText.SelectionFont = fontDialog1.Font;