C#鼠标单击图表中数据点的事件

时间:2012-05-28 12:25:00

标签: c# visual-studio-2010 charts

我想创建一个图表,我正在使用Visual Studio 2010中工具箱中的图表。这是我第一次尝试这样做,到目前为止我已经学习了图表的基础知识,比如如何创建数据点并将它们添加到系列中以获取图表。我想知道的是,如果它可以使数据点对用户可见(如点图中的点),并且用户能够点击数据点并获得特定结果。我在想的是,因为我创建数据点是有一个选项,使其“可点击”或我必须为每个数据点创建单独的鼠标点击事件。请原谅我的无知,但我是新手。我在哪里可以找到帮助我创建图表的指南。 到目前为止,这是我的代码的一部分:

chart1.Series[0].IsVisibleInLegend = false;
chart1.Series[0].ChartType = SeriesChartType.FastLine;

DateTime sday = Convert.ToDateTime(earnings1.dataGridView1[0, 0].Value.ToString());
chart1.Series[0].XValueType = ChartValueType.String;
int i = 0;
        foreach (DataGridViewRow dgvr in earnings1.dataGridView1.Rows)
        {
            decimal testing = Convert.ToDecimal(earnings1.dataGridView1[1, i].Value);
            testing = decimal.Truncate(testing);

            var point = new DataPoint(i+1, Convert.ToDouble(testing));

            point.Label = testing.ToString();
            point.Font = new Font("Century Gothic", 8, FontStyle.Bold);
            chart1.Series[0].Points.Add(point);
            chart1.Series[0].Points[i].AxisLabel = sday.ToString("dd/MM/yyyy");
            sday = sday.AddDays(1);
            i++;
          }

我正在做的是我有一个包含2列的datagridview。一个带有日期,另一个带有十进制数。我创建了一个图表,其中的日期位于x轴上(自定义标签,因为日期来自mysql数据库,格式为yyyy:mm:dd,我将其转换为dd / MM / yyyy),并在y轴上创建值。我每天创建一个数据点,其值为a,我将它们绘制在图表上。我如何点击这些点,以便例如当我点击2012年5月24日的值来做某事时,在该特定日期显示来自数据库的一些其他信息。 提前感谢您的支持,我们将非常感谢您的帮助。 诚挚 George Georgiou

2 个答案:

答案 0 :(得分:0)

您无法在数据点上添加点击事件。您可以做的是在数据点上添加注释并在注释上使用选定的事件处理程序。非常好,因为你可以设置它们的属性,如字体,大小,边框类型,颜色等。

答案 1 :(得分:0)

代码从Microsoft网站复制而来,并且可以在c#2017上运行

private void chtSales_MouseClick(object sender, MouseEventArgs e)
{
   var r = chtSales.HitTest(e.X, e.Y);
   if(r.ChartElementType == ChartElementType.DataPoint)
   {
       int index = r.PointIndex;
        MessageBox.Show(index.ToString());
    }

}

index返回0到数据点总数-1之间的整数。