12
votes

Nachet d'objet facile à Objet

Comment puis-je lier un objet à un nœud d'arbres (Winforms) en C #?

J'ai pensé à quelque chose comme Exnode: windows.forms.node qui peut prendre un objet en tant que membre en dehors du nom de Treenode ... Cependant, je ne suis pas sûr que c'est la bonne approche.


0 commentaires

4 Réponses :


3
votes

Vous cherchez quelque chose comme la propriété Tag sur Treenodes? Il peut contenir n'importe quel objet.

http://msdn.microsoft .com / fr-US / bibliothèque / system.windows.forms.treenode.tag.aspx


0 commentaires

20
votes

IMHO Vous avez plusieurs stratégies:

  1. Collez un objet de tout type dans la propriété Tag de n'importe quel nœud: Inverside: vous devrez le renvoyer à sa «forme native» lorsque vous le récupérez pour l'utiliser: si cette «forme native» est tout sauf de type 'objet.

  2. sous-classe Treenode et ajoutez des champs publics, des propriétés publiques ou autre, pour vos objets ... ou même la liste ... ou tout ce que vous devez vous associer au nœud.

  3. supposer que vos objets sont du même type, vous pouvez créer un dictionnaire de type: Dictionnaire , instancez-le et, au besoin, stockez une Treenode et son objet associé de cette façon comme une paire de clé / de valeur.

    stratégies n ° 1 et n ° 3 ont l'avantage que vous pouvez stocker un objet associé uniquement en tant que stratégie nécessaire n ° 2: est plus adapté au cas où vous prévoyez que chaque Treenode va avoir un objet associé ( s) Stratégie # 1 est un test facile: si la tagite Protective du nœud est NULL: vous savez qu'il n'y a pas d'objet: sinon null ... et il peut y avoir plus d'un type d'objet stocké dans le champ Tag ... alors LL Doit retirer l'objet Tag et vous assurer que c'est le type de bon type comme dans: (L'exemple qui suit suppose une classe publique, "CLASS1", a été attribué à la balise du premier nœud de l'arborescence: xxx

    stratégie n ° 3 est un peu plus facile puisque vous pouvez simplement évaluer si le dictionnaire .Contient le nœud comme une clé.


1 commentaires

Je pense que c'est une tenue d'objet plutôt que de "reliure".



2
votes

Cet article de MSDN a une bonne information, par exemple:

class myTreeNode : TreeNode
{
   public string FilePath;

   public myTreeNode(string fp)
   {
      FilePath = fp;
      this.Text = fp.Substring(fp.LastIndexOf("\\"));
   }
}


0 commentaires

0
votes

Vous pouvez regarder dans le TRELISTVIEW . Ce n'est pas parfait, mais cela fonctionne très bien et fait le processus d'affichage des objets dans une vue d'arborescence beaucoup plus facile que tout autre moyen que j'ai trouvé.


0 commentaires