问题:我想将工具提示文本部分加粗。
我想在工具提示中显示的示例文本:
label1: label1Value
label2: label2Value
到目前为止的进展:我使用自己的Draw事件实现创建了一个自定义的tooptip类。我用过:
DrawToopTipEventArgs newAgrs = new DrawToopTipEventArgs (
e.Graphics, e.AssociatedWindow, e.AssociatedControl,
e.Bounds, e.ToolTipText, this.BackColor, this.ForeColor,
new Font("Arial Unicode MS", 8.25F, FontStyle.Bold));
newAgrs.DrawText(TextFormatFlags.TextBoxControl);
主要问题:这种方式能够使完整的tooltiptext变粗,但仍然坚持我只能使值部分变为粗体并保持标签的其余部分不变。 (如上所示)。
答案 0 :(得分:1)
您必须自己测量文字并绘制所有内容。
private void ToolTip_Draw(object sender, DrawToolTipEventArgs e)
{
using (var boldFont = new Font(e.Font, FontStyle.Bold))
{
var headerText = "Header: ";
var valueText = "Value";
var headerTextSize = TextRenderer.MeasureText(headerText, e.Font);
TextRenderer.DrawText(e.Graphics, headerText, e.Font, e.Bounds.Location, Color.Black);
var valueTextPosition = new Point(e.Bounds.X + headerTextSize.Width, e.Bounds.Y);
TextRenderer.DrawText(e.Graphics, valueText, boldFont, valueTextPosition, Color.Black);
}
}
为简单起见,我对标题和值字符串进行了硬编码。将其扩展为多行工作应该是微不足道的。测量的文本大小具有高度,您还可以从Font
对象本身获得高度。
你的例子是让一切变得大胆的原因是你只是将所有绘图委托给DrawToolTipEventArgs
的实例并使用新字体并告诉它绘制工具提示文本(全部)用新的论点。它很高兴地使用了新字体并使用它绘制了所有文本。
要记住的另一件事是,还应该处理Popup
事件。这甚至用于测量工具提示的大小,因此您有足够的空间来绘制文本。如果您不处理它,它可能不够宽,无法处理粗体字体。具体来说,您需要设置PopupEventArgs.ToolTipSize
属性。