在LineSeries WinForms图表中显示工具提示?

时间:2013-07-31 06:03:20

标签: c# winforms mschart

我正在使用Dashboard系统,我在WinForms中使用折线图。我需要在每一行显示tooptip。我试过这个

var series = new Series
                    {
                        Name = chartPoint.SetName,
                        Color = chartPoint.ChartColor,
                        ChartType = SeriesChartType.Line,
                        BorderDashStyle = chartPoint.ChartDashStyle,
                        BorderWidth = chartPoint.BorderWidth,
                        IsVisibleInLegend = !chartPoint.HideLegend,
                        ToolTip = "Hello World"
                    };

但它不适合我

2 个答案:

答案 0 :(得分:3)

您有两个选项可以使用Chart控件接受的Keywords

myChart.Series[0].ToolTip = "Name #SERIESNAME : X - #VALX{F2} , Y - #VALY{F2}";

Chart控件中,Keyword是一个字符序列,在运行时被替换为自动计算的值。有关Chart控件接受的关键字的完整列表,请查看Keyword reference

如果你想要更奇特的东西,你必须处理事件GetToolTipText

this.myChart.GetToolTipText += new System.Windows.Forms.DataVisualization.Charting.Chart.ToolTipEventHandler(this.myChart_GetToolTipText);

现在我不确定你想在ToolTip上显示什么,但你可以相应地添加逻辑。假设您要显示系列中DataPoints的值

private void myChart_GetToolTipText(object sender, System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs e)
{
    switch(e.HitTestResult.ChartElementType)
    {  
        case ChartElementType.DataPoint:
            e.Text = myChart.Series[0].Points[e.HitTestResult.PointIndex]).ToString()
                     + /* something for which no keyword exists */;
            break;
        case ChartElementType.Axis:
            // add logic here
        case ....
        .
        .    
        default:
            // do nothing       
    }

答案 1 :(得分:1)

经过一些RnD我在Line Series上获得了工具提示,但仍然混淆了为什么它不能使用这个解决方案。 这是解决方案

series.ToolTip = string.Format("Name '{0}' : X - {1} , Y - {2}", chartPoint.SetName, "#VALX{F2}",
                                               "#VALY{F2}");
        mainChartControl.GetToolTipText += ChartControlGetToolTipText;

 private void ChartControlGetToolTipText(object sender, ToolTipEventArgs e)
    {
    }