私はWindowsフォームを使用していますが、特定の値である場合にテキストを太字にするテキストボックスがあります。
実行時にフォントの特性を変更するにはどうすればよいですか?
Textbox1.Font.Boldというプロパティがありますが、これはGet onlyプロパティです。
フォント自体のボールドプロパティは読み取り専用ですが、テキストボックスの実際のフォントプロパティは読み取り専用ではありません。次のように、テキストボックスのフォントを太字に変更できます。
textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);
そして再び戻る:
textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
アプリケーションによっては、テキストの変更時または問題のテキストボックスのフォーカス/非フォーカスのいずれかで、そのフォント割り当てを使用することをお勧めします。
これがどのように見えるかの簡単なサンプルです(空のフォーム、テキストボックスのみ。テキストが「太字」の場合、フォントは太字になり、大文字と小文字は区別されません)。
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);
}
}
}
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();