2008-09-24 53 views
5

獲取TreeView控件以顯示節點圖像時出現問題。下面的代碼有時會起作用,但在其他時間無法顯示任何圖像。.NET TreeView不會顯示圖像


private TreeNode AddNodeForCore(TreeNode root, Core c) { 
    string key = GetImageKey(c); 
    TreeNode t = root.Nodes.Add(c.Name, c.Name, key, key); 
    t.Tag = c; 
    return t; 
} 

請注意,當它失敗時,TreeView無法顯示任何節點的任何圖像。 TreeView確實有一個ImageList分配給它,並且圖像鍵肯定在圖像集合中。

編輯:
我的google-fu很弱。不敢相信我自己沒有找到答案。

回答

8

以上一派職位的有益位其實是:

「這是在Windows XP視覺樣式執行一個已知的bug某些控件,比如ImageList中,不要當他們」得到正確初始化在應用程序調用Application.EnableVisualStyles()之前就已經創建了,在C#的Program.cs中的正常Main()實現避免了這種情況,謝謝發佈!

所以基本上,保證在初始化圖像列表之前調用Application.EnableVisualStyles()。

+0

啊,你說得對。這確實是一個更有趣的事實。 – VVS 2008-09-24 07:55:17

2

快速谷歌搜索發現,這樣的回答:http://forums.microsoft.com/MSDN/ShowPost.aspx?siteid=1&PostID=965968

報價從該頁面:

如果包含TreeView控件的形式是在加載啓動功能如下,圖標實例出現!

public partial class ThisApplication 
{ 
    Form1 frm; 

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

    } 

但是,如果實例化類,如下:

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


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

    } 

那麼它們不會出現。此外,如果「VisualStyles」(XP新增)被禁用,則圖標在兩種情況下都可以使用。

0

的解決方案張貼「Application.EnableVisualStyles之間調用Application.DoEvents()()和Application.Run()」尤索林,也不是流行的爲我工作。

多擺擺手後,咬牙切齒牙齒和谷歌搜索,解決方案發布由Addy Santo做到了。