skessinger
Member
- Joined
 - Apr 12, 2010
 
- Messages
 - 8
 
- Programming Experience
 - 10+
 
I have a chart using 2-D line graphs with date/time as X-Axis.  I add several series to the chart area.   When the chart is plotted, the line graph connects the points in the series.  When I click on the chart with the cursor displayed, I can use the CursorPositionChanged event:
 
My problem is that no value is returned unless the cursor intersects a value in the series. How can I get the Y values of the line graphs even if it is not in the series, or how can I get the previous value in the series? Is there perhaps a method to get the Y-value of the graph without having to look in the series, using the cursor? I don't want to have to make my user click on the graph itself, the cursor should be sufficient as it intersects the graph. My previous charting tool worked this way, so I must be able to give my users the same functionality.
	
		
			
		
		
	
				
			
    Private Sub chart1_CursorPositionChanged(sender As Object, e As CursorEventArgs) Handles chart1.CursorPositionChanged
            SetPosition(e.Axis, e.NewPosition)
    End Sub
    Public Sub SetPosition(axis As Axis, position As Double)
        Dim XValue As Double
        Dim YValue As Double
        Dim dataPoint As DataPoint
        Dim i As Integer
        Dim seriesName As String
        If Double.IsNaN(position) Then
            Return
        End If
        If axis.AxisName = AxisName.X Then
            ' Convert Double to DateTime.
            Dim dateTimeX As DateTime = DateTime.FromOADate(position)
            ' Set X cursor position to edit Control
            Me.lblDateTimeStamp.Text = dateTimeX.ToString("MM/dd/yy HH:mm:ss")
            Dim strFormat As String
            For i = 1 To Me.gintNumOfPens
                seriesName = "Series" & i
                dataPoint = Me.chart1.Series(seriesName).Points.FindByValue(position, "X", 0)
                If dataPoint IsNot Nothing Then
                    YValue = dataPoint.YValues(0)
                    strFormat = "0." & StrDup(gDecimalPlaces(i - 1), "0")
                    lblYValue2(i - 1).Text = "Y" & (i) & " = " & YValue.ToString(strFormat)
                Else
                    lblYValue2(i - 1).Text = "Y" & (i) & " = "
                End If
            Next
    End Sub 'SetPosition
My problem is that no value is returned unless the cursor intersects a value in the series. How can I get the Y values of the line graphs even if it is not in the series, or how can I get the previous value in the series? Is there perhaps a method to get the Y-value of the graph without having to look in the series, using the cursor? I don't want to have to make my user click on the graph itself, the cursor should be sufficient as it intersects the graph. My previous charting tool worked this way, so I must be able to give my users the same functionality.
			
				Last edited by a moderator: