0

I am working on a windows form app with a zedgraph and a datagridview. The datagridview has a row for every point in the line graph, and when the user clicks on a point in the graph I want it to highlight the equivalent row in the datagridview.

So how can I find out which point the user has clicked? (I don't need any code for datagridview part).

shadowsora
  • 663
  • 7
  • 15
  • Not familiar with ZedGraph. In a MSChart you would do a HitTest in the Mouseclick event. – TaW Aug 30 '17 at 15:42

1 Answers1

0

I figured it out. You can use GraphPane.FindNearestObject to find the point that was clicked.

It seems that nearestObject is null if you do not click a point and is of type LineItem if you do, and then index will tell you which point was clicked.

private void zedGraphControl_MouseClick(object sender, MouseEventArgs e)
{
    object nearestObject;
    int index;
    this.zedGraphControl.GraphPane.FindNearestObject(new PointF(e.X, e.Y), this.CreateGraphics(), out nearestObject, out index);
    if (nearestObject != null && nearestObject.GetType() == typeof(LineItem))
    {
        // 'index' is the index of that data point
        dataGridView.CurrentCell = dataGridView.Rows[index].Cells[0];
    }
}
shadowsora
  • 663
  • 7
  • 15