我正在使用Windows表单,我有一个文本框,如果它是一定值,我偶尔会喜欢使文本变粗。
如何在运行时更改字体特征?
我看到有一个名为textbox1.Font.Bold的属性,但这是一个Get only属性。
答案 0 :(得分:154)
字体本身的粗体属性是只读的,但文本框的实际字体属性不是。您可以将文本框的字体更改为粗体,如下所示:
textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);
然后又回来了:
textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
答案 1 :(得分: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);
}
}
}
答案 2 :(得分: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();
答案 3 :(得分:1)
以下是切换粗体,下划线和斜体的示例。
protected override bool ProcessCmdKey( ref Message msg, Keys keyData )
{
if ( ActiveControl is RichTextBox r )
{
if ( keyData == ( Keys.Control | Keys.B ) )
{
r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Bold ); // XOR will toggle
return true;
}
if ( keyData == ( Keys.Control | Keys.U ) )
{
r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Underline ); // XOR will toggle
return true;
}
if ( keyData == ( Keys.Control | Keys.I ) )
{
r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Italic ); // XOR will toggle
return true;
}
}
return base.ProcessCmdKey( ref msg, keyData );
}
答案 4 :(得分:-3)
txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
//Font(Font Name,Font Size,Font.Style)