将数据绑定到treeview节点

时间:2014-05-11 11:47:11

标签: vb.net treeview

我正在使用循环来搜索索引对象,并从符合条件的对象创建树视图。

我想将数据“绑定”到树视图中的每个节点,因此当单击它时,我可以提取索引对象的属性。

有没有办法将数据“绑定”到树视图节点?

我编写的代码循环索引的对象。

Private ClanIndex As Integer

Public Sub TreeviewPopulate()
    Dim Clan_Level As TreeNode = Nothing
    Dim Enclave_Title_Level As TreeNode = Nothing
    Dim Enclave_Planet_Level As TreeNode = Nothing
    Dim Enclave_Enclave_Level As TreeNode = Nothing

    Dim _Planet As Integer
    Dim _Enclave As Integer
    Dim _Owner As String = Form1.GAME.Clan(ClanIndex).Clan

    For _Planet = 2 To 41

        For _Enclave = 1 To 4
            If Form1.GAME.Planet(_Planet).Enclave(_Enclave).Owner = _Owner Then
                Enclave_Planet_Level = Enclave_Title_Level.Nodes.Add(Form1.GAME.Planet(_Planet).PlanetName)
                For i = 1 To 4
                    If Form1.GAME.Planet(_Planet).Enclave(i).Owner = _Owner Then
                        Enclave_Enclave_Level = Enclave_Planet_Level.Nodes.Add("Enclave " & Form1.GAME.Planet(_Planet).Enclave(i).EnclaveNumber)
                    End If

                Next
                GoTo 2

            End If

        Next
2:
    Next

End Sub

1 个答案:

答案 0 :(得分:1)

您可以使用您创建的TreeNode对象的Tag属性来存储其他信息。您可以存储要显示的信息,也可以存储对包含这些信息的对象的某种引用。

例如:

Enclave_Planet_Level = Enclave_Title_Level.Nodes.Add(Form1.GAME.Planet(_Planet).PlanetName)

可以更改为

Dim newTN As New TreeNode(Form1.GAME.Planet(_Planet).PlanetName)
newTN.Tag = Form1.GAME.Planet(_Planet)
Enclave_Title_Level.Nodes.Add(newTN)

然后在处理节点选择的事件处理程序中,您可以重用此引用

Private Sub Enclave_Title_Level_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles Enclave_Title_Level.AfterSelect
    If e.Node.Tag IsNot Nothing Then
        If TypeOf e.Node.Tag Is Planet Then
            'Do something
        End If
    End If
End Sub

(我假设这个班叫做Planet.Ifs到位以避免例外)。