我有一个System.Windows.Forms.DataVisualization.Charting.chart
,当你将鼠标悬停在图表上时,我希望显示一些关于图表栏的信息。
但我看不出在哪里设置工具提示。
我可以设置此chart3.Series[0].ToolTip = "hello world";
但如何获取我为了修改文字而悬停的x
或y
值?
答案 0 :(得分:8)
您还可以在构建DataPoint时向DataPoint添加工具提示
DataPoint point = new DataPoint();
point.SetValueXY(x, y);
point.ToolTip = string.Format("{0}, {1}", x, y);
series.Points.Add(point);
在我看来,这比替换GetToolTipText事件中的文字更整洁/更清洁
答案 1 :(得分: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] );
}
}
答案 2 :(得分:3)
我很惊讶没有人提到简单和标准的解决方案,所以我不得不回答一个5年前的问题。
只需将图表关键字添加到工具提示字符串即可。它们会自动替换为您悬停的点的值。像这样:
chart3.Series[0].ToolTip = "hello world from #VALX, #VAL";
这些应该涵盖几乎所有图表工具提示用例。对于他们没有涉及的罕见情况,您可以使用其他答案所建议的内容。
更多信息: https://msdn.microsoft.com/en-us/library/dd456687.aspx
答案 3 :(得分:1)
这是我的财务(棒,烛台)图表的工作。仅显示YValue[0]
DataPoint
YValue
作为大部分示例,但{Y}轴为 Point? prevPosition = null;
ToolTip tooltip = new ToolTip();
private void chart_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
if (prevPosition.HasValue && pos == prevPosition.Value)
return;
tooltip.RemoveAll();
prevPosition = pos;
var results = chart.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint); // set ChartElementType.PlottingArea for full area, not only DataPoints
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.DataPoint) // set ChartElementType.PlottingArea for full area, not only DataPoints
{
var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y);
tooltip.Show(((int)yVal).ToString(), chart, pos.X, pos.Y - 15);
}
}
}
。
node