Je suis en quelque sorte coincé et je ne peux pas voir la forêt pour les arbres.Utilisez la classe TreeNode pour travailler avec des données hiérarchiquement structurées sans TreeView
Ce que je veux faire: J'ai une grande liste de données (environ 6000 nœuds), au moment assez simple:
- ID unique
- Parent
- Liste des enfants
- Liste item
Actuellement, ce sont données à plat, mais Je veux créer une hiérarchie, donc je peux
- recherche UniqueID dans une profondeur spécifique de l'arbre
- pour toute ID, liste rangée des parents jusqu'à la racine
- liste tous les enfants de un seul ID boucle
- à travers les entrées (vertical, horizontal)
- ordre des éléments horizontaux
- Liste des articles
Ce que j'ai essayé: J'ai commencé avec ce code: see link
<Serializable> _
Public Class TreeNode
Private _uniqueID As Integer
Private _name As String
Private _parentID As Integer
Private _depth As Integer
Private _children As ArrayList
Public Sub New()
End Sub
Public Sub New(name As String, parentID As Integer)
Me.New(0, name, parentID, -1)
End Sub
Public Sub New(uniqueID As Integer, name As String, parentID As Integer, depth As Integer)
_uniqueID = uniqueID
_name = name
_parentID = parentID
_depth = depth
End Sub
''' <summary>
''' Gets or sets the unique ID associated with this category
''' </summary>
''' <remarks>Once a non-zero ID has been set, it may not be modified.</remarks>
Public Property UniqueID() As Integer
Get
Return _uniqueID
End Get
Set
If _uniqueID = 0 Then
_uniqueID = value
Else
Throw New Exception("The UniqueID property cannot be modified once it has a non-zero value")
End If
End Set
End Property
Public ReadOnly Property Depth() As Integer
Get
Return _depth
End Get
End Property
''' <summary>
''' Gets or sets the label for this node
''' </summary>
Public Property Name() As String
Get
Return _name
End Get
Set
_name = value
End Set
End Property
''' <summary>
''' The ID of the parent node
''' </summary>
Public Property ParentID() As Integer
Get
Return _parentID
End Get
Set
_parentID = value
End Set
End Property
''' <summary>
''' Gets the children TreeNode objects for this category
''' </summary>
''' <remarks>In .NET 2.0, this can be modified to use generics, and have type ArrayList<TreeNode></remarks>
Public Property Children() As ArrayList
Get
Return _children
End Get
Set
_children = value
End Set
End Property
End Class
J'ai créé mon arbre:
Public Dendrogram As List(Of TreeNode)
.. et ajouté tous les nœuds à elle. Super propre, compréhensible, mais pas de fonctions!
Cela m'a amené à another approach Mais c'est beaucoup trop complexe pour mes objectifs.
.. alors je me demandais: pourquoi ne pas utiliser la classe TreeNode de MS? Mais je ne veux pas utiliser le TreeView associé. Il y a this par exemple, mais il est en C et je n'arrive pas à l'appliquer en VBNet (coincé à l'implémentation du ITreeNode).
Ma question: Comment puis-je utiliser les fonctionnalités de TreeView telles que "TreeView1.Nodes.Add (topNode)" ou "treeView1.Nodes (0) .Nodes.Find (searchterm, True)" sans réellement l'avoir sur mon formulaire (j'en ai juste besoin pour structurer mes données, sans le visualiser). J'espère que cela a du sens et que n'importe qui peut me diriger dans la bonne direction!
Ce absolument travaillé, Mark! Merci pour votre réponse détaillée, et de nombreuses excuses pour ma réponse tardive! – Alex