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


98

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

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

textbox1.Font.Boldというプロパティがあることがわかりますが、これは取得のみのプロパティです。

回答:


181

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

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

そして再び戻る:

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

1
ありがとう!わあ、想像していたよりずっと簡単だった。つまり、フォントは文字列のようなものです。一度作成すると、変更することはできません。宣言できるのは新しいインスタンスのみです。
ディスクドライブ

2
はい、一度作成すると状態を変更できないという点で文字列のように動作するようです。つまり、不変です。ただし、Fontが不変であることを言及するMSDNの記事はありますが、Font自体の実際のリファレンスにはこれが記載されていません。
ティムロイド

linkbuttonの場合、これは私にとってうまくいきました:button.Font.Bold = true
deebs

同じことを部分的なテキストに対して行うことはできますか?テキストの一部だけを強調したいということです。
Anil

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.