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...
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.
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...
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???
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.
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...
Ja habe den Beitrag schon gelesen... hatte aber erst nen Brett vorm Kopf... aber schon verstanden...
Dann vielen Dank für eure Hilfe...