3

我正在开发一个仪表板系统,我在 WinForms 中使用折线图。我需要在每一行显示 toptip。我试过这个

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"
                    };

但它不适合我

4

2 回答 2

5

您有两个选项可以使用Keywords图表控件接受。

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

Chart控件中,aKeyword是一个字符序列,它在运行时被自动计算的值替换。有关图表控件接受的关键字的完整列表,请查找关键字参考

如果你想要更奇特的东西,你必须处理这个事件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       
    }
于 2013-07-31T08:49:19.840 回答
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)
    {
    }
于 2013-07-31T06:56:44.157 回答