private void Chart_MouseMove(object sender, MouseEventArgs e) { if (PlottingLog || LoadingLog) { return; } var pos = e.Location; if (prevPosition.HasValue && pos == prevPosition.Value) { return; } prevPosition = pos; var results = chart.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint); foreach (var result in results) { if (result.ChartElementType == ChartElementType.DataPoint) { var prop = result.Object as DataPoint; if (prop != null) { if (prop.YValues[0] == 15 || prop.YValues[0] == 14.7) { var pointXPixel = result.ChartArea.AxisX.ValueToPixelPosition(prop.XValue); var pointYPixel = result.ChartArea.AxisY.ValueToPixelPosition(prop.YValues[0]); // check if the cursor is really close to the point (25 pixels around the point) if (Math.Abs(pos.X - pointXPixel) < 25 && Math.Abs(pos.Y - pointYPixel) < 25) { string data = ""; if (EventsView.TryGetEvent(prop.XValue, out data)) { MForm.SetGraphRichText(data, Util.MessageColor(data)); } else { MForm.SetGraphRichText("", SystemColors.Window); } } } } } } }