TreeView Umgang & Design


dannyyy

Grünschnabel
Hallo Leute

So, bin bei meinem aktuellen Projekt auf weitere Fragen gestossen...dies liegt wohl eindeutig das ich in der Windows-Programmierung neu bin und bissher mehr mit der Webprogrammierung was am Hut hatte (mache das nur in meiner Freizeit, nichts berufliches *g*)

1. Wenn ich TreeView (resp. die Nodes) dynamisch erstellen lasse, so funktioniert dies auch wie gewünscht. z.B. Habe ich in einer DB Tabelle alle Kategorien gespeichert welche ich mittels Rekursion dann in ein TreeView zaubere.
Code:
tnd = new TreeNode("Katname");
Nun je nachdem weller knoten der User anklickt, sollte dann eine entsprechende Form (oder Datensatz) erscheinen.
Auf das Ereignis kann ich dan mit dem Event AfterSelect eingehen.
Die eigentliche Frage, anhand was soll ich jetzt Werten was der User angeklickt hat? Den TreeNode Text zu verwenden ist da sicher nicht die Sauberste Methode denk ich mal.
Oder wie wird sowas gehandhabt?

2. Das bringt mich zur nächsten Frage. Ich möchte gerne bei den einzelnen Endknoten angeben wieviele Datensätze sich dahinter verbergen.
Dazu habe ich einfach vor dem anlegen des Knoten eine DB Abfrage gestartet welches mir die Anzahl Datensätze liefert und die an den Knoten gehängt:
Code:
tnd = new TreeNode(String.Format("Katname ({0})", anzahl));
Spätestens jetzt kann ich mit dem Knoten Text nichts mehr anfangen...


3. In bezug auf Frage 2, wie kann ich einen Knoten herbei zaubern wie es bei jensten Mailsclients is. Also Knoten name danach in runden oder eckigen Klammern die Anzahl Elemente, jedoch andersfarbig dargestellt.
Da wird meine obere Methode nicht die richtige sein...

Habe schon so einiges durchgelesen, jedoch nicht die Antwort bekommen die ich gesucht habe...
Vielen Dank an die helfenden User *dankesag*

Gruss
Danny
 

Norbert Eder

Erfahrenes Mitglied
Da wird dir nichts anderes übrigbleiben als die TreeNode zu überschreiben. Da könntest du dann die statt dem TreeNode.Name auch noch eine TreeNode.ID reinpflanzen, welche die Id deiner Kategorie in der Datenbank wiedergibt.
 

dannyyy

Grünschnabel
Vielen Dank für die Antworten...

Ja zu der Frage 1./2. habe ich es mittels der Tag Eigenschaft gelöst, war mir nicht sicher ob ich diese für mein Vorhaben missbrauchen darf *gg*

Zu 3. Leider habe ich nicht mal bei den Kommerziellen komponenten was gefunden, welches genau dies zu verfügung stellt.
Entweder sind es einfache erweiterungen, das man CheckBoxen und RadioBoxen in den Nodes bekommt oder dann, Komponenten die ein TreeView mit einem Grid kompinieren oder andere überladene Komponenten...

Bleibt mir dem Fall nur das selber Zeichnen...
Für dies muss ich mich erstmals mit GDI+ auseinander setzen und genauer studieren wie das TreeView aufgebaut ist, bzw. wo ich überhaupt zeichnen muss *gg*

Sollte jemand eine solche komponente kennen (OpenSource/Freeware) bitte melden
Kommerzielle sind mir zu teuer, resp. für eine private Anwendung uninteressant...
 

Norbert Eder

Erfahrenes Mitglied
Wieso GDI+?

Verwende einen scrollable Container und klatsch dort einfach deine Grafiken + und - rein, deine Checkboxen, TextBoxen, Label, whatever. Ist einfacher zu realisieren.