VB.NET 给Series加一个小数点

VB.NET add a decimal Point to Series

以下函数为图表创建多个系列。

Function createSeries(ByVal fileNames() As String, ByVal intValXAxis As Integer, ByVal intValYAxis As Integer) As Series()
    Dim ChartSeries(fileNames.Count) As Series
    Dim i As Integer = 0
    For Each filename In fileNames
        ChartSeries(i) = New Series
        ChartSeries(i).ChartType = SeriesChartType.FastLine
        ChartSeries(i).ChartArea = "ChartArea1"
        If filename.Contains("NOK") = True Then
            ChartSeries(i).Color = Color.Red
            ChartSeries(i).BorderWidth = 3
        Else
            ChartSeries(i).Color = Color.Green
        End If

        Dim fileReader = My.Computer.FileSystem.OpenTextFileReader(filename)
        Do

            Dim strCache() As String = Split(fileReader.ReadLine(), ";")
            ChartSeries(i).Points.AddXY(strCache(intValXAxis - 1), strCache(intValYAxis - 1))

            ChartSeries(i).ToolTip = filename
        Loop Until fileReader.EndOfStream = True
        i += 1
    Next
    Return ChartSeries
End Function

我遇到的问题是,我创建的系列的 Y 值大多是这样的:0,09440104 或 0,1757813。我需要这些值按原样显示在图表上,但是零被删除并且 Y 点值是:9440104 或 1757813

在将它们添加到系列之前,我尝试用 "Globalization" 格式化它们,但它并没有解决问题。

明确一点:我希望上面显示的数字(0,09440104 和 0,1757813)是点的 Y 值。

我该如何解决这个问题?

提前致谢。

默认情况下,En-US 文化会将您的逗号 "," 视为千位分隔符,从而将您的数据视为 > 0 而不是 < 0

您有两个选择:更改区域性或更改字符串格式。如果您所有的数字都小于 1000(或者,更准确地说,没有 . 作为千位分隔符),我建议只需将 , 替换为 .

Dim strCache() As String = Split(fileReader.ReadLine(), ";")
Dim repStrX = strCache(intValXAxis - 1).Replace(",",".")
Dim repStrY = strCache(intValYAxis - 1).Replace(",",".")
ChartSeries(i).Points.AddXY(repStrX , repStrY)

或者,如果它们的值大于 1000(或者更准确地说,没有 . 作为千位分隔符),在不指定文化的情况下,您也可以使用Replace 有一些技巧:利用不存在的字符作为中间值在原始 string.

中的 ., 之间翻转
Dim strCache() As String = Split(fileReader.ReadLine(), ";")
Dim repStrX = strCache(intValXAxis - 1).Replace(",","G").Replace(".",",").Replace("G",".")
Dim repStrY = strCache(intValYAxis - 1).Replace(",","G").Replace(".",",").Replace("G",".")
ChartSeries(i).Points.AddXY(repStrX , repStrY)