【发布时间】:2009-11-03 05:35:41
【问题描述】:
我正在使用Graphics.DrawString 来绘制我的用户控件的文本,如下所示:
protected override void OnPaint(PaintEventArgs e)
{
RectangleF bounds = DisplayRectangle;
bounds.Inflate(-4, -4); // Padding
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Near;
format.LineAlignment = StringAlignment.Near;
format.Trimming = StringTrimming.None;
using (Brush bFore = new SolidBrush(ForeColor))
{
g.DrawString(Text, Font, bFore, bounds, format);
}
}
如果控件的Text 比DisplayRectangle 宽,DrawString 很好地将Text 在字边界处分成多行。
现在我想在Text 中的一些词下划线,但我无法解决。我尝试在下划线部分开始之前拆分Text,然后MeasureString 字符串,DrawString 正常部分,然后DrawString 下划线部分。但这只有在 Text 是单行时才有效。
我确信使用子控件LinkLabel 或RichTextBox 来呈现我的控件的文本会解决这个问题,但我不喜欢使用子控件只是为了给几个单词加下划线的想法。还有其他方法吗?
【问题讨论】: