当鼠标悬停在条形图上时,如何在c#中更改和显示工具提示?

Kev*_*ger 8 c# charts tooltip

我有一个System.Windows.Forms.DataVisualization.Charting.chart,当你将鼠标悬停在图表上时,我想显示一些关于图表上栏的信息.但我看不到在哪里设置工具提示.

我可以设置这个 chart3.Series[0].ToolTip = "hello world";

但是我如何获取我为了修改文本而悬停的值xy值?

Lum*_*mmo 9

您还可以在构建DataPoint时向DataPoint添加工具提示

DataPoint point = new DataPoint();
point.SetValueXY(x, y);
point.ToolTip = string.Format("{0}, {1}", x, y);
series.Points.Add(point);
Run Code Online (Sandbox Code Playgroud)

在我看来,这比替换GetToolTipText事件中的文本更整洁/更干净

  • 是的,但是在有数千个点的长序列中,你最终会构建几千个几乎从未使用过的字符串. (4认同)

rel*_*dom 6

我很惊讶没有人提到这个简单而标准的解决方案,所以我不得不回答一个已有5年历史的问题。

只需将图表关键字添加到工具提示字符串即可。它们将自动替换为您悬停的点的值。像这样:

chart3.Series[0].ToolTip = "hello world from #VALX, #VAL";
Run Code Online (Sandbox Code Playgroud)

这些应该涵盖几乎所有图表工具提示用例。在极少数情况下,它们无法解决您的问题,您可以使用其他答案所建议的内容。

更多信息:https : //msdn.microsoft.com/en-us/library/dd456687.aspx


Has*_*gha 4

    this.chart1.GetToolTipText += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs>(this.Chart1_GetToolTipText);
...
// [2] in x.cs file.
private void Chart1_GetToolTipText(object sender, System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs e)
{

   // Check selevted chart element and set tooltip text
   if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
   {
      int i = e.HitTestResult.PointIndex;
      DataPoint dp = e.HitTestResult.Series.Points[i];
      e.Text = string.Format("{0:F1}, {1:F1}", dp.XValue, dp.YValues[0] );
   }
}
Run Code Online (Sandbox Code Playgroud)