Laden...

TreeView.Contains: prüfen, ob ein Knoten gleichen Namens schon vorhanden ist

Erstellt von SlyFox vor 10 Jahren Letzter Beitrag vor 10 Jahren 3.083 Views
Thema geschlossen
S
SlyFox Themenstarter:in
231 Beiträge seit 2007
vor 10 Jahren
TreeView.Contains: prüfen, ob ein Knoten gleichen Namens schon vorhanden ist

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

49.485 Beiträge seit 2005
vor 10 Jahren

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

Hinweis von herbivore vor 10 Jahren

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.

Thema geschlossen