在MS图表中,我使用以下代码显示工具提示。
ToolTip ToolTip = new ToolTip();
ToolTip .Show(" X value:"+s+"\nLine 1 Y value: =" + ss + "\nLine 2 Y value:=" + ss1, chart, (int)e.Location.X, (int)e.Location.Y);
我只能使用ToolTip设置一种前景色。ForeColor= System.Drawing.Color.Red;。
我是C#的新手。
如何在自定义工具提示类中分配不同的颜色并绘制文本,或者如何使用HTML渲染器实现我的要求?
我无法为工具提示文本的不同部分分配不同的颜色。
如何实现?
答案 0 :(得分:1)
您可以所有者绘制工具提示
示例:
ToolTip ToolTip = new ToolTip();
ToolTip.OwnerDraw = true;
ToolTip.Popup += (ss, ee) => { ee.ToolTipSize = new Size(200, 50); };
ToolTip.Draw += (ss, ee) =>
{
ee.DrawBackground();
ee.DrawBorder();
ee.Graphics.DrawString("Warning", Font, Brushes.Red, 10, 1);
ee.Graphics.DrawString(ee.ToolTipText, Font, Brushes.Black, 1, 22);
};
ToolTip.Show("Demo only", somecontrol..);
这只是一个简单的例子;工具提示样式还有更多参数,包括绘图内容,图像,各种类型的笔刷等。
还建议使用TextRenderer
代替经典的GDI + DrawString
。
请注意如何在Size
事件中设置PopUp
!
文本可以进行各种格式设置;对于多行文本,建议使用带有边界矩形的重载而不是x / y坐标,并且也可以使用StringFormat
对齐。不过请注意,将格式化的部分嵌入文本内部始终是棘手的。
可能,但要像GDI绘图一样一味地做到正确就很乏味。 --
基本技巧是首先确定一个边界矩形。这可以通过MeasureString
完成。
答案 1 :(得分:0)
简短的回答是“本来就根本做不到”(除非您认为自己绘制标签是本机的)。但是像往常一样,在编程中也有一些创新的方法来获得所需的结果。
Question Orel suggested中的答案基本上是利用HTML标记渲染器在应用程序内部渲染样式化文本。 如果您查看该库here的较新版本,它们实际上提供了WinForms ToolTip控件,该控件接受HTML标记以在其内容区域内进行呈现。
要使用此渲染器,他们提供了一个nuget软件包,它使安装变得很简单。只需管理您的项目nuget软件包并搜索HtmlRenderer.WinForms并安装最新版本。 (请检查它是否还安装了最新版本的HtmlRenderer.Core,因为它没有安装在我的头上,因此我必须更新Core软件包)
在此之后,重建项目以在设计器工具箱中获取新控件。 为了测试该程序包,我将一个文本框和一个HtmlToolTip拖到了窗体上。要设置新的工具提示,请像正常的WinForms工具提示一样使用它。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.htmlToolTip1.SetToolTip(this.textBox1, "<h1 style=\"color:red\">Hello</h1><i style=\"color:blue\">World</i>");
}
}
现在,您可以使用HTML标记设置工具提示内容的样式,并根据需要更改前景色: