VB.NET为Series添加一个小数点

时间:2016-03-09 09:33:12

标签: vb.net charts format decimal

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

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

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

为了清楚起见:我希望上面显示的数字(0,09440104和0,1757813)是这些点的Y值。

我该如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:2)

默认情况下,En-US culture会将您的逗号","读为千位分隔符,从而将您的数据设为> 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(或者,更准确地说,没有.为千分隔符),而没有指定文化,您也可以使用{{ 1}}有一些技巧:利用不存在的字符作为中间值,在原始Replace中的.,之间翻转。

string