你的treeview和数组是什么结构呢?这个源码你改改用吧
为灌阳等地区用户提供了全套网页设计制作服务,及灌阳网站建设行业解决方案。主营业务为网站建设、成都网站制作、灌阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim str(TreeView1.GetNodeCount(False) - 1, 0) As String '定义一个2维数组存放节点内容
Dim node As TreeNode
Dim childnode As TreeNode
Dim i, j As Integer
i = 0
For Each node In TreeView1.Nodes '循环根节点
j = 1
str(i, 0) = node.Text '每个根节点的内容存放在第一列
If UBound(str, 2) node.GetNodeCount(False) Then
ReDim Preserve str(TreeView1.GetNodeCount(False) - 1, node.GetNodeCount(False)) '根据子节点的数目更改数组大小
End If
For Each childnode In node.Nodes '循环子节点
str(i, j) = childnode.Text '存放每个子节点的内容
j = j + 1
Next
i = i + 1
Next
node = Nothing
childnode = Nothing
End Sub
要用递归的方法才行,首先构建一个带有treeview1和button1的基本窗体,在treeview1中添加一些节点,保持默认的名字即可。程序将搜寻节点带有j"节点1"的节点,包括节点10,节点11....,然后按照你的要求添加新节点。代码如下:
Public Class Form1
Dim a() As String = {"节点1", "a(1)节点"}
Dim mnodes As New ArrayList
Dim cnodes As TreeNode
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
get_n(TreeView1.Nodes)
For Each ntxt As TreeNode In mnodes
If ntxt.Text.IndexOf(a(0)) = 0 Then
ntxt.Nodes.Add(New TreeNode(a(1)))
Else
ntxt.Nodes.Add(New TreeNode("新节点"))
End If
Next
End Sub
Private Sub get_n(ByVal cn As TreeNodeCollection)
For Each ma As TreeNode In cn
If ma.Nodes.Count 0 Then
mnodes.Add(ma)
cnodes = ma
get_n(cnodes.Nodes)
Else
mnodes.Add(ma)
End If
Next
End Sub
End Class
for each是用来简化for的,但你这种写法有点奇怪,一般没这样用的,通常的用法是
dim a() as string={....}
dim str as string '定义临时变量,它的类型与你数组中元素类型一致
For Each str In a
MessageBox.Show(str)
Next
你上面代码中,a就是一个3个元素的数组,从a[0]到a[2], 用for each的时候,就会遍历你的a数组,上面的代码相当于
for i=0 to a.Length-1
MessageBox.Show(a(i))
next
遍历的例子:
Dim i, j As Integer
For i = 0 To DataGridView1.RowCount - 1
For j = 0 To DataGridView1.ColumnCount - 1
MsgBox(DataGridView1.Item(j, i).Value)
Next
Next
注意:与Excel的单元格命名规则不一样,这里的 Item(j, i) 中,列号 j 在前,行号 i 在后。