我有 5 个组合框。每个都有无限数量的元素,有些是空的。我想要的是将名称 ComboBox 添加到 Treeview 作为“父”。并将 ComboBox 中的项目列为“父”中的“childern”。 .如果 ComboBox 为空,则将被忽略。
我想要一个适用于 FrameWork 3 的代码
我的代码
我的代码
Public Sub TREEVIEWFILL()
TreeView1.Nodes.Clear()
If Com_A.SelectedIndex > -1 Then
TreeView1.Nodes.Add(Com_A.Text, Com_A.Text)
For i = 0 To Com_A.Items.Count - 1
TreeView1.Nodes.Add(Com_A.Text, Com_A.Items(i).ToString)
Next
End If
If Com_B.SelectedIndex > -1 Then
TreeView1.Nodes(Com_A.Text).Nodes.Add(Com_B.Text, Com_B.Text)
For i = 0 To Com_B.Items.Count - 1
TreeView1.Nodes(Com_A.Text).Nodes.Add(Com_B.Text, Com_B.Items(i).ToString)
Next
End If
If Com_C.SelectedIndex > -1 Then
TreeView1.Nodes(Com_A.Text).Nodes(Com_B.Text).Nodes.Add(Com_C.Text, Com_C.Text)
For i = 0 To Com_C.Items.Count - 1
TreeView1.Nodes(Com_A.Text).Nodes(Com_B.Text).Nodes.Add(Com_C.Text, Com_C.Items(i).ToString)
Next
End If
End Sub
答案 0 :(得分:1)
根据你的评论,你可以做例如:
' +
Imports System.Linq
Public Sub TREEVIEWFILL()
Dim cboxes = {Com_A, Com_B, Com_C, Com_D, Com_F}
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
For Each cmb In cboxes.Where(Function(x) x.Items.Count > 0)
Dim node As New TreeNode(cmb.Name,
cmb.Items.Cast(Of String).
Select(Function(x) New TreeNode(x)).ToArray())
TreeView1.Nodes.Add(node)
Next
TreeView1.EndUpdate()
End Sub
或者不使用 LINQ
:
Public Sub TREEVIEWFILL()
Dim cboxes = {Com_A, Com_B, Com_C, Com_D, Com_F}
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
For Each cmb In cboxes
If cmb.Items.Count > 0 Then
Dim parent As New TreeNode(cmb.Name)
For Each item As String In cmb.Items
parent.Nodes.Add(item, item)
Next
TreeView1.Nodes.Add(parent)
End If
Next
TreeView1.EndUpdate()
End Sub
注意,当您调用 .BeginUpdate()
方法填充树时,您应该调用 .EndUpdate()
和 .Nodes.Add(..)
方法。