Hallo,
ich möchte einem TreeView-Steuerelement einen Knoten hinzufügen (oberste Ebene), wenn dieser noch nicht vorhanden ist (Vermeidung von Dubletten).
Dazu habe ich folgenden Code geschrieben:
public static void AddNode(TreeView tv, string text)
{
TreeNode tn = new TreeNode(text); // Neuen Knoten erzeugen
if (!tv.Nodes.Contains(tn)) // Prüfen, ob Knoten noch nicht vorhanden ist
{
tv.Nodes.Add(tn); //Falls nicht vorhanden: anhängen
}
}
Wenn ich jetzt Knoten mit gleichem Namen hinzu fügen möchte, dann klappt das, aber ich weiß nicht, warum.
Wer kann mir da einen Tipp geben, was ich falsch mache?
Christoph
Hallo SlyFox,
spätestens, wenn eine Methode nicht tut, was du erwartest, erwarten wir, dass du von alleine in die (MSDN-)Dokumentation schaust. Dort steht dann:
Mithilfe dieser Methode können Sie bestimmen, ob ein TreeNode ein Member der Auflistung ist [...]
Diese Methode überprüft nur Verweisgleichheit. Sie können damit nicht bestimmen, ob in der Auflistung ein ähnlicher, aber unterschiedlicher Knoten enthalten ist.
Gleich gleich die Nächste Methode heißt: TreeNodeCollection.ContainsKey. Dort steht
Bestimmt, ob die Auflistung einen Strukturknoten mit dem angegebenen Schlüssel enthält.
[...]Die Name-Eigenschaft entspricht dem Schlüssel für ein TreeNode in der TreeNodeCollection.
Beim Schlüsselvergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.
Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1.
herbivore
Wie sich herausgestellt hat, war das Problem anscheinend, dass SlyFox an der falsche Stelle in der Doku geschaut hatte: in System.Web.UI.WebControls statt in System.Windows.Forms. Da es in beiden Namespaces viele gleichnamige Controls, Eigenschaften und Methoden gibt, die aber zum Teil anders funktionieren, muss man bei einer Googlesuche nach solchen Namen immer genau aufpassen, dass man im passenden Namespace landet.