代码之家  ›  专栏  ›  技术社区  ›  Hari Mohamed Sa'ed

使用鼠标悬停更新图表系列的工具提示

  •  0
  • Hari Mohamed Sa'ed  · 技术社区  · 7 年前

    我正在写一个绘制折线图的应用程序。它从CSV文件中获取一行并将其传递给一个方法(有几百行):

    Private Function plotChart(ByVal sortedRow As String())
    
            count = sortedRow(8)    'Represents X value
            Dim spcRawPoint = sortedRow(7)  'Represents Y value            
            Try                
                Me.Chart1.Series("Result").Points.AddXY(count, spcPoint)
                Me.Chart1.Series("Result").ToolTip = "Value: " + spcRawPoint + Environment.NewLine + "Date: " + count.ToString
            Catch ex As Exception
                MessageBox.Show(ErrorToString)
            End Try
    
        End Function
    

    当我将鼠标悬停在图表的序列上时,我希望它显示相应的X(十进制)和Y(日期时间)值。使用上述方法,绘制图表后,当我悬停到序列时,我看到序列上所有点显示的X和Y值都相同。

    我在互联网上做了一些搜索,我看到了一个建议,包括 鼠标移动 鼠标套 我的图表中的事件。我做到了:

    Private Sub Chart1_MouseHover(ByVal sender As System.Object, ByVal e As ToolTipEventArgs) Handles Chart1.MouseHover
            If e.HitTestResult.PointIndex >= 0 Then
                If e.HitTestResult.ChartElementType = DataVisualization.Charting.ChartElementType.DataPoint Then
                    Dim Xvalue As Decimal = e.X
                    Dim Yvalue As DateTime = Convert.ToDateTime(e.Y)
                    Me.Chart1.Series("Result").ToolTip = "Value: " + Xvalue + Environment.NewLine + "Date: " + Yvalue.ToString
                End If
            End If
        End Sub
    

    代码可以生成,但当我运行它时,会发生异常:

    System.InvalidCastException was unhandled
      HResult=-2147467262
      Message=Unable to cast object of type 'System.EventArgs' to type 'System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs'.
    

    我知道这是一个铸造问题,但我不知道如何解决它。 我需要的是,当我将鼠标悬停在图表区域的上述序列上时,工具提示将显示X和Y值。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Hari Mohamed Sa'ed    7 年前

    我成功修复了鼠标悬停事件:

    Private Sub Form1_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.MouseHover
            Me.Chart1.Series("Result").ToolTip = "#VALY{F}\n#VALX"    
        End Sub
    

    现在,每当我将鼠标悬停在图表的序列上时,我都可以看到X和Y值。