Як встановити текст текстового поля жирним шрифтом під час виконання?


98

Я використовую форми Windows, і у мене є текстове поле, яке я часом хотів би зробити текст жирним, якщо це певне значення.

Як змінити характеристики шрифту під час виконання?

Я бачу, що є властивість, що називається textbox1.Font.Bold, але це властивість Get only.

Відповіді:


181

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

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

А потім знову:

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

1
Дякую! вау, це було набагато простіше, ніж я собі уявляв. Отже, я думаю, це означає, що шрифт схожий на рядок, коли ви створили його, ви не зможете його змінити. Ви можете оголосити лише його новий екземпляр.
Diskdrive

2
Так, здається, він поводиться як рядок з точки зору неможливості змінити свій стан після створення, тобто він незмінний . Однак, хоча є статті MSDN, що посилаються на те, що шрифт незмінний, фактичне посилання на сам шрифт цього не говорить.
Тім Ллойд,

для кнопки посилання це спрацювало для мене: button.Font.Bold = true
deebs

Чи можна те саме зробити для часткового тексту? Я маю на увазі, що хочу виділити лише частину тексту.
Аніл

3

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

Ось короткий зразок того, як це може виглядати (порожня форма, лише текстове поле. Шрифт стає жирним, коли текст читає "жирний", без урахування регістру):

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);
        }
    }
}

1

Ви можете використовувати 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();

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.