Is there any way to make a part of a label.text
to be bold?
label.text = "asd" + string;
Would like the string
portion to be bold.
Is possible, how can this be done?
text. style. StyleSpan(Typeface. BOLD), start, end, Spannable.
To bold the text in HTML, use either the strong tag or the b (bold) tag. Browsers will bold the text inside both of these tags the same, but the strong tag indicates that the text is of particular importance or urgency. You can also bold text with the CSS font-weight property set to “bold.”
Another option would be setting the Font. Bold property of the label to True. Assuming you can use several labels of course.
Formatting elements were designed to display special types of text: <b> - Bold text. <strong> - Important text.
The following class illustrates how to do it by overriding OnPaint()
in the Label
class of WinForms. You can refine it. But what I did was to use the pipe character (|
) in a string to tell the OnPaint()
method to print text before the |
as bold and after it as normal text.
class LabelX : Label { protected override void OnPaint(PaintEventArgs e) { Point drawPoint = new Point(0, 0); string[] ary = Text.Split(new char[] { '|' }); if (ary.Length == 2) { Font normalFont = this.Font; Font boldFont = new Font(normalFont, FontStyle.Bold); Size boldSize = TextRenderer.MeasureText(ary[0], boldFont); Size normalSize = TextRenderer.MeasureText(ary[1], normalFont); Rectangle boldRect = new Rectangle(drawPoint, boldSize); Rectangle normalRect = new Rectangle( boldRect.Right, boldRect.Top, normalSize.Width, normalSize.Height); TextRenderer.DrawText(e.Graphics, ary[0], boldFont, boldRect, ForeColor); TextRenderer.DrawText(e.Graphics, ary[1], normalFont, normalRect, ForeColor); } else { TextRenderer.DrawText(e.Graphics, Text, Font, drawPoint, ForeColor); } } }
Here's how to use it:
LabelX x = new LabelX(); Controls.Add(x); x.Dock = DockStyle.Top; x.Text = "Hello | World";
Hello will be printed in bold and world in normal.
Use Literal
control, and add a <b>
tag around the part of the text you want:
_myLiteral.Text = "Hello <b>
big</b>
world";
Two options:
Label
and do your own custom drawing in the OnPaint()
method.The second choice has been answered already.
WinForms doesn't allow you to do that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With