Как установить текст в текстовом поле, выделенном во время выполнения?

Я использую формы Windows, и у меня есть текстовое поле, которое я бы иногда хотел сделать полужирным, если это определенное значение.

Как изменить характеристики шрифта во время выполнения?

Я вижу, что есть свойство, называемое textbox1.Font.Bold, но это свойство Get only.

Ответ 1

Жирным шрифтом самого шрифта является только чтение, но фактическое свойство шрифта в текстовом поле отсутствует. Вы можете изменить шрифт текстового поля следующим образом:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);

И затем снова:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);

Ответ 2

В зависимости от вашего приложения вы, вероятно, захотите использовать это назначение шрифта либо при изменении текста, либо в фокусе/нефокусировке текстового поля, о котором идет речь.

Вот быстрая выборка, на что она могла бы выглядеть (пустая форма с текстовым полем. Шрифт становится полужирным, когда текст читает "полужирный", не учитывает регистр):

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        RegisterEvents();
    }

    private void RegisterEvents()
    {
        _tboTest.TextChanged += new EventHandler(TboTest_TextChanged);
    }

    private void TboTest_TextChanged(object sender, EventArgs e)
    {
        // Change the text to bold on specified condition
        if (_tboTest.Text.Equals("Bold", StringComparison.OrdinalIgnoreCase))
        {
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Bold);
        }
        else
        {
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Regular);
        }
    }
}

Ответ 3

Вы можете использовать метод Extension для переключения между обычным стилем и жирным шрифтом, как показано ниже:

static class Helper
    {
        public static void SwtichToBoldRegular(this TextBox c)
        {
            if (c.Font.Style!= FontStyle.Bold)
                c.Font = new Font(c.Font, FontStyle.Bold);
            else
                c.Font = new Font(c.Font, FontStyle.Regular);
        }
    }

И использование:

textBox1.SwtichToBoldRegular();