问题
I'm using Windows forms and I have a textbox which I would occassionally like to make the text bold if it is a certain value.
How do I change the font characteristics at run time?
I see that there is a property called textbox1.Font.Bold but this is a Get only property.
回答1:
The bold property of the font itself is read only, but the actual font property of the text box is not. You can change the font of the textbox to bold as follows:
textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);
And then back again:
textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);
回答2:
Depending on your application, you'll probably want to use that Font assignment either on text change or focus/unfocus of the textbox in question.
Here's a quick sample of what it could look like (empty form, with just a textbox. Font turns bold when the text reads 'bold', case-insensitive):
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);
}
}
}
回答3:
You could use Extension
method to switch between Regular Style and Bold Style as below:
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);
}
}
And usage:
textBox1.SwtichToBoldRegular();
回答4:
txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
//Font(Font Name,Font Size,Font.Style)
来源:https://stackoverflow.com/questions/3089033/how-do-i-set-a-textboxs-text-to-bold-at-run-time