web-dev-qa-db-ja.com

実行時にテキストボックスのテキストを太字に設定するにはどうすればよいですか?

私はWindowsフォームを使用していますが、特定の値である場合にテキストを太字にするテキストボックスがあります。

実行時にフォントの特性を変更するにはどうすればよいですか?

Textbox1.Font.Boldというプロパティがありますが、これはGet onlyプロパティです。

88
Diskdrive

フォント自体のボールドプロパティは読み取り専用ですが、テキストボックスの実際のフォントプロパティは読み取り専用ではありません。次のように、テキストボックスのフォントを太字に変更できます。

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

そして再び戻る:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
157
Tim Lloyd

アプリケーションによっては、テキストの変更時または問題のテキストボックスのフォーカス/非フォーカスのいずれかで、そのフォント割り当てを使用することをお勧めします。

これがどのように見えるかの簡単なサンプルです(空のフォーム、テキストボックスのみ。テキストが「太字」の場合、フォントは太字になり、大文字と小文字は区別されません)。

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);
        }
    }
}
2
Robert Hui

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();
1
Ali