2012-03-11 32 views
2

我向Form1組件添加了一個面板。該面板被命名爲panel1在面板中添加新標籤時發生NullReferenceException

瀏覽通用列表時,我想動態添加標籤。你看我的一些代碼:

if (list.Count > 0) 
{ 

    foreach (TLClass item in list) 
    { 
     Label key = new Label(); 
     key.Text = item.Key; 
     panel1.Container.Add(key); //here throws an exception 

     Label code = new Label(); 
     code.Text = item.Code.ToString(); 
     panel1.Container.Add(code); 

     Label en = new Label(); 
     en.Text = item.Languages["EN-EN"].ToString(); 
     panel1.Container.Add(en); 


     Label fr = new Label(); 
     fr.Text = item.Languages["FR-FR"].ToString(); 
     panel1.Container.Add(fr); 

     Label nl = new Label(); 
     nl.Text = item.Languages["NL-NL"].ToString(); 
     panel1.Container.Add(nl); 

     Label ro = new Label(); 
     ro.Text = item.Languages["RO-RO"].ToString(); 
     panel1.Container.Add(ro); 

     Form1.ActiveForm.Container.Add(panel1); 
    } 
} 

panel1.Container.Add(key);之後,立即拋出一個異常NullReferenceException

爲什麼?我的錯誤在哪裏?

enter image description here

問題解決 我叫用Controls代替Container

+2

的控件集合你檢查PANEL1是否爲空? 99%可能,真正的問題是「爲什麼?」 – 2012-03-11 17:09:07

+0

'panel1.Container'如何? – 2012-03-11 17:10:14

+0

@Eric:我寫了'panel1 = new Panel()',但同樣的問題 – 2012-03-11 17:11:12

回答

4

您控件添加到容器中。
這應該是父窗體,但是當您添加父窗體時未設置。
然而,正確的方法是添加到面板

panel1.Controls.Add(key);