从 ComboO 填充树视图

时间:2021-04-04 15:59:38

标签: vb.net

我有 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

1 个答案:

答案 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(..) 方法。

相关问题