0

我正在尝试遍历我的数据表列 sdescr 并将列中的文本用作我的 x 轴的标签,但它不起作用我收到此错误

“System.Collections.Generic.List(Of String)”类型的值无法转换为“字符串的一维数组”。

For i As Integer = 0 To myCurve1.Points.Count - 1
        Dim pt As PointPair = myCurve1.Points(i)
        ' Create a text label from the Y data value   
        Dim text As New TextObj(pt.Y.ToString("f0"), pt.X, pt.Y + 0.1, CoordType.AxisXYScale, AlignH.Left, AlignV.Center)
        text.ZOrder = ZOrder.A_InFront
        text.FontSpec.Angle = 90
        myPane.GraphObjList.Add(text)


        Dim labels As New List(Of String)

        For Each row As DataRow In tablegraph.Rows
            labels = row.Item("SDESCR")
        Next row

        myPane.XAxis.Scale.TextLabels = labels
        myPane.XAxis.Type = AxisType.Text
    Next
4

1 回答 1

1

您需要删除代码以从创建点的 For Next 循环中获取标签。

这意味着

    Dim labels As New List(Of String)          
    For Each row As DataRow In tablegraph.Rows             
    labels = row.Item("SDESCR")         
    Next row          

    myPane.XAxis.Scale.TextLabels = labels         
    myPane.XAxis.Type = AxisType.Text

现在,在循环绘图点之外,您需要通过 DataTable

请查看您遇到的错误...字符串列表无法转换为字符串数组。这些对象是不等价的。

一种选择是做这样的事情(在你循环绘制点之后)

Dim labels(tablegraph.Rows.Count - 1) as String

For i As Integer = 0 To tablegraph.Rows.Count - 1
     labels(i) = tablegraph.Row(i).Item("SDESCR")
Next

myPane.XAxis.Scale.TextLabels = labels         
myPane.XAxis.Type = AxisType.Text

我在这台电脑上没有 Zed,所以我没有在 Visual Studio 中检查过这个,但这应该会给你一个非常体面的方向。

于 2011-02-23T22:07:50.160 回答