2008-09-24 15 views
5

Problem beim Abrufen eines TreeView-Steuerelements zum Anzeigen von Knotenbildern. Der folgende Code funktioniert manchmal, zeigt aber zu anderen Zeiten kein Bild an..NET TreeView zeigt keine Bilder

Beachten Sie, dass das TreeView fehlschlägt, Bilder für einen beliebigen Knoten anzuzeigen, wenn es fehlschlägt. Der TreeView ist eine ImageList zugewiesen, und der Image Key befindet sich definitiv in der Bildersammlung.

Bearbeiten:
Mein Google-Fu ist schwach. Ich kann nicht glauben, dass ich diese Antwort nicht selbst gefunden habe.

Antwort

8

Die hilfreich Bit der googled Beiträge sind oben in der Tat.

„Dies ist ein bekannter Fehler in der Windows XP visuellen Stilen Implementierung Bestimmte Kontrollen, wie Abbildungsliste, wird nicht richtig initialisiert, wenn sie‘ Sie wurde erstellt, bevor die App Application.EnableVisualStyles() aufruft. Die normale Main() - Implementierung in einem C# -Programm.cs vermeidet dies. Vielen Dank für die Rückmeldung! "

Also, im Grunde, garantieren, dass Application.EnableVisualStyles() aufgerufen wird, bevor Sie Ihre Imagelist initialisieren.

+0

Ah, du hast Recht. Dies ist in der Tat die interessantere Tatsache. – VVS

2

Eine schnelle Google-Suche diese Antwort gefunden: http://forums.microsoft.com/MSDN/ShowPost.aspx?siteid=1&PostID=965968

Zitat von dieser Seite: in der Add-In-Startfunktion, wie unten, die Symbole

Wenn das Formular mit dem TreeView instanziiert erscheinen!

public partial class ThisApplication 
{ 
    Form1 frm; 

    private void ThisApplication_Startup(object sender, System.EventArgs e) 
    { 
     frm = new Form1(); 
     frm.Show(); 

    } 

ABER, wenn sie mit der Klasse instanziiert, wie unten:

public partial class ThisApplication 
{ 
    Form1 frm = new Form1(); 


    private void ThisApplication_Startup(object sender, System.EventArgs e) 
    { 
        frm.Show(); 

    } 

dann nicht erscheinen sie. Wenn "VisualStyles" (neu mit XP) deaktiviert sind, funktionieren die Symbole in beiden Fällen.

1

Nach [der Add-Methode Abschnitt] (http://msdn.microsoft.com/en-us/library/ydx6whxs(VS.80).aspx) in MSDN Library, müssen Sie beide TreeView.ImageList und TreeView.SelectedImageList seit dem vierten Argumente füllen, um die zweite Liste bezieht.

Wenn dieser Fehler passiert, wenn Sie einen Knoten auswählen, dann suchen Sie nicht weiter.

0

Die Lösung von Yossarian noch die beliebten "Call-Application.DoEvents() zwischen Application.EnableVisualStyles() und Application.Run()" geschrieben für mich gearbeitet.

nach viel flailing, knirschend von Zähnen und Googeln, die Lösung gepostet von Addy Santo hat den Trick gemacht.

Verwandte Themen