Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Mithilfe des TreeView-Steuerelements können Daten hierarchisch organisiert abgebildet werden. Das Steuerelement unterstützt die Mehrfachauswahl mithilfe von zuschaltbaren Kontrollkästchen pro dargestelltem Knoten.
Das Objektmodell eines TreeView-Steuerelements besteht aus einer rekursiven Zusammenstellung von Auflistungen und Knoten der Klasse TreeNode. Jeder Knoten besitzt genau einen übergeordneten Knoten. Aufgrund dessen, dass im TreeView-Steuerelement selbst eine Auflistung der Klasse TreeNodeCollection untergebracht ist, kann das Steuerelement in oberster Ebene beliebig viele Knoten enthalten.
Tabelle 4.20 Wichtige Elemente der Klasse TreeView
|
Member |
Name |
Beschreibung |
|---|---|---|
|
|
Liefert oder definiert | |
|
|
Liefert oder definiert | |
|
|
Liefert oder definiert | |
|
|
Liefert oder definiert | |
|
|
Liefert oder definiert den Index, respektive den Schlüssel des anzuzeigenden Bilds im nicht ausgewählten Zustand (nur eine der beiden Angaben ist notwendig). Die Angabe bezieht sich auf die Bildliste, die mit der Eigenschaft | |
|
|
Liefert oder definiert den Index, respektive den Schlüssel des anzuzeigenden Bilds im ausgewählten Zustand (nur eine der beiden Angaben ist notwendig). Die Angabe bezieht sich auf die Bildliste, die mit der Eigenschaft | |
|
|
Liefert oder definiert die Bildliste für nicht ausgewählten, respektive ausgewählten Zustand der Knoten | |
|
|
Liefert oder definiert die Einrückung für jede Stufe im Baum. Werte kleiner 16 werden ignoriert. | |
|
|
Liefert oder definiert die Höhe der Knoten | |
|
|
Liefert oder definiert | |
|
|
Liefert oder definiert die Farbe der Linien, die die Knoten verbinden | |
|
|
Liefert die Liste der Knoten im Wurzelverzeichnis | |
|
|
Liefert oder definiert das Trennzeichen, das für den Zugriff auf einen bestimmten Knoten benutzt werden kann | |
|
|
Liefert oder definiert den Knoten, der aktuell selektiert ist. Ist kein Knoten selektiert, liefert diese Eigenschaft | |
|
|
Liefert oder definiert | |
|
|
Liefert oder definiert | |
|
|
Liefert oder definiert | |
|
|
Liefert den ersten voll sichtbaren Knoten des Baums | |
|
|
Liefert oder definiert eine Instanz, die die Schnittstelle | |
|
|
Liefert die Anzahl der Knoten, die im Baum ganz dargestellt werden können | |
|
|
Klappt alle Knoten ein, sodass die kompakteste Darstellung des Baums gezeigt wird, respektive erweitert den Baum, sodass alle Knoten sichtbar sind | |
|
|
Liefert den Knoten, der an einer definierten grafischen Position ist | |
|
|
Liefert die Anzahl der Knoten optional inklusive aller Subknoten | |
|
|
Liefert die Informationen über einen Knoten an einer bestimmten grafischen Position | |
|
|
Sortiert die Knoten. Um diese Methode zu nutzen, muss die Eigenschaft | |
|
|
Wird ausgelöst, nachdem respektive bevor das Kontrollkästchen eines bestimmten Knotens verändert wurde | |
|
|
Wird ausgelöst, nachdem respektive bevor die Knoten eingeklappt wurden | |
|
|
Wird ausgelöst, nachdem respektive bevor die Knoten erweitert worden sind | |
|
|
Wird ausgelöst, nachdem respektive bevor der Text eines Knotens verändert wurde | |
|
|
Wird ausgelöst, nachdem respektive bevor ein bestimmter Knoten selektiert wurde | |
|
|
Werden bei entsprechender Mausaktion ausgelöst |
Das Beispiel Abbildung 4.20 zeigt die Darstellung eines TreeView-Steuerelements in der Anwendung für einen eingelesenen Baum des Dateisystems. Das dazu gehörende Listing 4.5 zeigt den Beginn des Ladevorgangs, indem die Laufwerke als erste Knoten in das Steuerelement geladen werden.
Beachten Sie beim Umgang mit einem TreeView-Steuerelement, dass die Knoten nur dann die Zeichen für eine Erweiterung anzeigen, wenn auch tatsächlich ein Inhalt vorhanden ist. Da im Umgang mit dem Dateisystem aus Geschwindigkeitsgründen nicht der gesamte Baum eingelesen werden sollte, muss also für eine mögliche Erweiterung eines Baumes immer eine Stufe mehr eingelesen werden, als gerade angezeigt wird. Zu diesem Zweck implementieren Sie das Ereignis BeforeExpand, wie es im Listing des Beispiels abgebildet ist.
// Ereignisbehandlung für das Laden des Formulars
private void CpnlTreeView_Load(object sender, EventArgs e) {
// Lokale Daten
TreeNode objNode;
// Alle Laufwerke auflisten und als sichtbare Objekte darstellen
foreach (DriveInfo objDrive in DriveInfo.GetDrives()){
objNode = new TreeNode();
objNode.Text = objDrive.Name;
// Abbildung ergänzen
switch (objDrive.DriveType) {
case DriveType.CDRom:
objNode.ImageIndex = objNode.SelectedImageIndex = 2;
break;
case DriveType.Fixed:
objNode.ImageIndex = objNode.SelectedImageIndex = 3;
break;
(Wiedergabe gekürzt)
}
// Knoten in Baum einfügen und prüfen, ob das Laufwerk gelesen werden kann
_tvMain.Nodes.Add(objNode);
if (objDrive.IsReady) {
// Laufwerk kann gelesen werden. Erste Ebene der Daten einlesen
AddDirectory(objNode.Nodes, objDrive.RootDirectory.FullName);
}
}
}
// Ereignisbehandlung für das Erweitern eines Knotens
private void TreeViewMain_BeforeExpand(object sender, TreeViewCancelEventArgs e) {
// Für jeden bereits enthaltenen Knoten die nächste Ebene lesen.
// Diese Maßnahme ist notwendig, damit das TreeView-Steuerelement
// für die Knoten die richtige Darstellung wählt (erweiterbar oder nicht).
foreach (TreeNode objNode in e.Node.Nodes) {
AddDirectory(objNode.Nodes, objNode.Tag.ToString());
}
}
Listing 4.5 Band_2\Kapitel_04\LearningForms_04\LearningForms_04\20_PolynominalControls\CpnlTreeView.cs