我正在使用循环来搜索索引对象,并从符合条件的对象创建树视图。
我想将数据“绑定”到树视图中的每个节点,因此当单击它时,我可以提取索引对象的属性。
有没有办法将数据“绑定”到树视图节点?
我编写的代码循环索引的对象。
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
答案 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到位以避免例外)。