Verknüpfung von Klassen mit TreeNode



  • Hallo,

    ich habe verschiedene Klassen, welche ich in einem TreeView darstellen möchte. Der User kann dann auf den jeweiligen TreeNode klicken und die Klassenmember werden in einem PropertyGrid dargestellt und können geändert werden.
    Dazu ist es natürlich notwendig, dass dem jeweiligen TreeNode die dazugehörige Klasse irgendwie zugewiesen wird.

    In der Vergangenheit habe ich verschiedene Methoden dafür genutzt, welche alle ihre Vor- und Nachteile haben.

    Methode 1:
    Die Klasse ist eine Vererbung von TreeNode

    public MyClass : TreeNode{}
    

    Nachteil: Beim Serialisieren kann es zu Problemen kommen.

    Methode 2:

    public MyClass{
        TreeNode MyNode = null;
        string Name = string.Empty;
    
        public MyClass(TreeNode MyNode, string Name){this.MyNode = MyNode; this.Name = Name;}
    }
    
    public MyTreeNode : TreeNode{
        object MyClass
        public MyTreeNode(object MyClass) : base(MyClass.Name){
            this.MyClass = MyClass;
        }
    }
    

    Nachteil: Es wird eine extra Klasse MyTreeNode benötigt, welche sich kaum von der Parentklasse unterscheidet.

    Wie macht "man" das? Gibt es dafür eine Standard-Vorgehenseweise? Da ich jetzt schon so lange mit dieser Unannehmlichkeit kämpfe und immer wieder lese, dass man Vererbungen wo möglich vermeiden sollte wollte ich die Frage mal platzieren.

    Gruß,
    CJens



  • Benutze doch einfach die TreeNode.Tag-Eigenschaft dafür.



  • Man muss es nur wissen 🙂 Vielen Dank!