索引超出了数组vb.net n mapwingis的范围

时间:2015-06-30 08:24:36

标签: vb.net visual-studio-2012

我正在制作一个包含Mapwingis Dim scheme As New MapWinGIS.ColorScheme Dim idx As Integer idx = FormMain.TreeViewLayer.Nodes.IndexOf(FormMain.TreeViewLayer.SelectedNode) sf = FormMain.AxMapMain.get_Shapefile(idx) mainMapHandler = FormMain.AxMapMain.AddLayer(sf, True) sf = FormMain.AxMapMain.get_Shapefile(mainMapHandler) Dim fieldName As Integer fieldName = CBSymVarNameUnique.SelectedIndex sf.Categories.Generate(fieldName, MapWinGIS.tkClassificationType.ctUniqueValues, 0) filcol = Convert.ToUInt32(RGB(255, 255, 255)) filcol2 = Convert.ToUInt32(RGB(0, 0, 255)) scheme.SetColors(filcol, filcol2) Dim nama2() As String = New String() {} For i As Integer = 0 To sf.Categories.Count - 1 Dim category As MapWinGIS.ShapefileCategory = sf.Categories.Item(i) nama2(i) = category.Name.Substring(category.Name.IndexOf("=") + 1) 'error here Next 的地图应用。 我想用数组保存地图数据,但任何错误。 这段代码:

...
<td valign="top" class="topBorderLight"><span class="redFonts grade">5</span></td>
...

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

在这一行

 Dim nama2() As String = New String() {}

声明一个字符串数组,没有任何空间来存储字符串。此数组的Length为零。

当然,当你写作

 nama2(i) = category.Name.Substring(.....)

代码崩溃,因为没有空间来存储数组中的元素

您需要使用appropriare空间声明数组,以存储您计划检索的字符串

 Dim nama2(sf.Categories.Count-1) As String 

但是我建议使用List(Of String)并根据需要将元素添加到此列表中

Dim nama2 = New List(Of String)()
For i As Integer = 0 To sf.Categories.Count - 1
    Dim category As MapWinGIS.ShapefileCategory = sf.Categories.Item(i)
    nama2.Add(category.Name.Substring(category.Name.IndexOf("="))
Next