Laden...

[gelöst] Problem beim Casten eines TreeNodes auf eine abgeleitete Klasse

Erstellt von tc5678 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.463 Views
T
tc5678 Themenstarter:in
38 Beiträge seit 2009
vor 13 Jahren
[gelöst] Problem beim Casten eines TreeNodes auf eine abgeleitete Klasse

Hallo! Ich habe beim Ableiten der Klasse TreeNode das Problem, dass der Node, beim Schreiben auf eine neue Variable nicht gecastet, werden kann. Zu diesem Problem habe ich gelesen, dass die Klasse TreeView ebenfalls abzuleiten ist. Hierbei soll die Methode CreateNode() überschrieben werden. Hierbei tritt das Problem auf, dass eine solche Methode nicht gefunden werden kann... Hier ist einfach mal mein Code:


    namespace System.Windows.Forms
{
public class TreeView_ex : TreeView
    {
        public TreeView_ex()
        {
            
        }
        
        protected override TreeNode CreateNode()
        {
            return new TreeNode_ex();
        }
        
        
    }

public class TreeNode_ex : TreeNode
    {
        public TreeNode_ex()
        {
        }
}
}

Mir geht es jetzt ersteinmal nicht so sehr um weitere Eigenschaften oder so... Ich frage mich warum geht das Casten net und warum kann die Methode CreateNode() nicht gefunden werden??? Hier erfolgt dann die Ausnahme:


 TreeNode_ex sad = (TreeNode_ex)mm_Form.treeView3.Nodes[0];

Was vergesse bzw. übersehe ich?? Für jede Hilfe bin ich dankbar...

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo tc5678,

du verwechselst da etwas: System.Windows.Forms.TreeView != System.Web.UI.WebControls.TreeView
Und nur letzterer stellt die besagte Methode CreateNode bereit.

Was hast du vor?
Vielleicht kannst du es ja auf einem anderen Wege erreichen.

916 Beiträge seit 2008
vor 13 Jahren

Also wenn du in deinen abgeleiteten TreeView mit Nodes.Add() wirklich deine eigenen TreeNodes rein steckst, dann kannst du die danach selbstverständlich auch casten. Wenn das aber natürlich gewöhnliche TreeNode nodes sind, dann ist es doch logisch das du die nicht einfach auf deine TreeNode Klasse casten kannst!

Again what learned...

T
tc5678 Themenstarter:in
38 Beiträge seit 2009
vor 13 Jahren

OH! Ja das habe ich wohl übersehen... Ok, ich möchte die Klasse TreeNode ableiten, um dieser später weitere Eigenschaften hinzuzufügen. Leider erhalte ich zum Beispiel bei dem folgenden Code eine Exception:


TreeNode_ex sad = (TreeNode_ex)mm_Form.treeView3.Nodes[0];

Versuche eigentlich nur einen Knoten abzurufen, um ihn auf eine Variable zu schreiben und zwar der, der abgeleiteten Klasse... Hier erhalte ich die folgende Exception:

InvalidCastException
{"Das Objekt des Typs "System.Windows.Forms.TreeNode" kann nicht in Typ "System.Windows.Forms.TreeNode_ex" umgewandelt werden."}

Wenn ich wie folgt, einen Knoten einer TreeView hinzufüge:


object d = mm_Form.treeView3.Nodes.Add(@"c:\test"); 
                Type ds = d.GetType();

dann erhalte ich immer einen TreeNode und keinen TreeNode_ex! Ok, das er das net umwandeln kann ist mir schon irgendwie klar. Die Lösung muss also darin bestehen die TreeView abzuleiten und die Methoden zu überschreiben, oder? Und wenn ja, dann kann ich das so machen wie ich es ürsprünglich vor hatte???

Oder , wat mache ich falsch???

5.742 Beiträge seit 2007
vor 13 Jahren

Packe die zusätzlichen Eigenschaften einfach in die Tag Property des _TreeNode_s.

DataBinding funktioniert unter WinForms IMHO nicht wirklich in Kombination mit dem TreeView. Ansonsten wäre das die zu bevorzugende Lösung.

916 Beiträge seit 2008
vor 13 Jahren

Hast du meinen Post gelesen????

Du musst beim hinzufügen eine TreeView_ex Instanz hinzufügen!


mm_Form.treeView3.Nodes.Add(new TreeView_ex(...));

Again what learned...

T
tc5678 Themenstarter:in
38 Beiträge seit 2009
vor 13 Jahren

Ja habe den Beitrag schon gelesen... hatte aber erst nen Brett vorm Kopf... aber schon verstanden...
Dann vielen Dank für eure Hilfe...