2009-11-01 7 views

Antwort

11

Sie müssen sowohl den Imageindex und die SelectedImageIndex auf dem Baumknoten setzen.

9

'SelectedImageIndex hat die Absicht, bei der Auswahl ein anderes Bild anzeigen zu lassen, als durch den' ImageIndex 'für einen bestimmten Knoten festgelegt wurde. Um diese beiden Werte konsistent zu halten, müssen sie auf denselben Wert gesetzt werden. Dies kann zur Entwurfszeit oder programmgesteuert nach Ihren Bedürfnissen erfolgen.

Zum Beispiel, wenn die Bilder nie ändern Sie dann ist es so einfach wie sie gleichzeitig eingestellt wird, wenn ein neuer Knoten zu dem TreeView hinzugefügt wird:

int myCurrentImageIndex = 0; 
TreeNode node = myTreeView.Nodes.Add("new node!"); 
node.ImageIndex = node.SelectedImageIndex = myCurrentImageIndex; 

Wenn Sie jedoch aus irgendeinem Grunde den Imageindex-Wert tun ändern Nach der ersten Erstellung (z. B. eine Reaktion auf eine Art von Benutzeraktion) müssen Sie auch den SelectedImageIndex ändern. Andernfalls werden sie inkonsistent werden.

int myNewImageIndex = 1; 
node.ImageIndex = node.SelectedImageIndex = myNewImageIndex; 

(Hinweis genügt es nicht, sie zu setzen das gleiche in der Event-Handler des ‚Afterselect‘ Veranstaltung sein. Es muss überall in Ihrem Code, wo Imageindex Änderungen vorgenommen werden.)

+0

Wenn Sie eine Anwendung erstellen, die ihre Struktur wie einen Ordner präsentiert, werden Ihre Benutzer die Änderung des Bildes schätzen, wenn sie einen "Ordner" ausgewählt haben. Stellen Sie nur sicher, dass die Änderung nicht zu grell oder subtil ist. –

+0

Ok, ich habe die gleiche Situation. Aber wie kann ich dieses Verhalten vollständig stoppen? Alle meine Knoten werden zur Laufzeit erstellt. Verfolgen des AfterSelect-Ereignisses gibt mir eine Möglichkeit, dies zu stoppen? –

+1

Ich hatte auch die genaue Situation. Ich habe ein statisches Wörterbuch erstellt, in dem die Bilder mit einem zugehörigen Index untergebracht sind, da ich den Index der Imagelist zur Laufzeit nicht bestimmen konnte, da sie dynamisch hinzugefügt wurden. Also habe ich etwas verwendet wie: public static readonly Dictionary TREEVIEW_ICONS = neues Dictionary (); und habe es bei add beibehalten. Die Zeichenfolge im Wörterbuch war der eindeutige Dateiname des Bildes und der Int war meine Art, den Index zu verfolgen. I.e. TREEVIEW_ICONS.Add (iconFileName, TREEVIEW_ICONS.Count) –

1

können Sie tun Sie es direkt im Konstruktor:

Verwandte Themen