private void chartData_GetToolTipText(object sender, System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs e) { if (e.HitTestResult.ChartArea == chartData.ChartAreas[ChartAreaIndex]) { double position = GetAxisXPositionFromMouse(e.X); int index = (int)(position - 0.5); if (index < 0) { index = 0; } var stockSeries = chartData.Series[StockSeriesIndex]; if (position < 0 || position >= stockSeries.Points.Count) { e.Text = string.Empty; } else { var bar = _currentShownData.DataOrderedByTime[index]; e.Text = string.Format( "Position:{6}\nTime:{0:yyyy-MM-dd}\nOpen:{1:0.000}\nClose:{2:0.000}\nHighest:{3:0.000}\nLowest:{4:0.000}\nVolume:{5}", bar.Time, bar.OpenPrice, bar.ClosePrice, bar.HighestPrice, bar.LowestPrice, bar.Volume, position); } } }
private void chart1_GetToolTipText(object sender, System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs e) { // Check selected chart element and set tooltip text for it switch (e.HitTestResult.ChartElementType) { case System.Windows.Forms.DataVisualization.Charting.ChartElementType.DataPoint: var dataPoint = e.HitTestResult.Series.Points[e.HitTestResult.PointIndex]; e.Text = string.Format("X:\t{0}\nY:\t{1}", dataPoint.XValue, dataPoint.YValues[0]); break; } }
private void ViewCoordinates(object sender, System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs e) { var area = chart1.ChartAreas[0]; var areaPosition = area.Position; var areaRect = new RectangleF(areaPosition.X * chart1.Width / 100, areaPosition.Y * chart1.Height / 100, areaPosition.Width * chart1.Width / 100, areaPosition.Height * chart1.Height / 100); var innerPlot = area.InnerPlotPosition; double x = area.AxisX.Minimum + (area.AxisX.Maximum - area.AxisX.Minimum) * (e.X - areaRect.Left - innerPlot.X * areaRect.Width / 100) / (innerPlot.Width * areaRect.Width / 100); double y = area.AxisY.Maximum - (area.AxisY.Maximum - area.AxisY.Minimum) * (e.Y - areaRect.Top - innerPlot.Y * areaRect.Height / 100) / (innerPlot.Height * areaRect.Height / 100); Y_coordinateBox.Text = Math.Round(y, 2).ToString(); X_coordinateBox.Text = Math.Round(x, 2).ToString(); }