2009-07-22 34 views
2

我創建了一個帶有組合框的UserControl。這個組合框從xml填充,當它不存在時,它從資源文件加載。
它在程序中正常工作,但無法在設計器中顯示 - 它說:「對象引用未設置爲對象的實例。」UserControl無法在Designer中顯示 - null對象引用

在負責加載從XML的空引用檢查跳過我無法理解的理由列表中的類...

public SortedDictionary<string, string> Countries 
{ 
    get 
    { 
     if (object.ReferenceEquals(countries, null)) 
     { 
      GetCountryList(); 
     } 
     return countries; 
    } 
} 

填充ComboBox的是這樣的:

comboBoxCountry.DataSource = new BindingSource(Program.language.Countries, null); 

Program.language在Program中初始化,但對Designer沒有幫助。

問題是,我應該如何(何時,在什麼事件)填充ComboBox(= xml中的加載列表),以便能夠在設計器中顯示我的控件。

回答

4

如果可能,您想檢查this.DesignMode,然後在設計時不加載組合框。

+0

這似乎是工作。 是否有任何理由,爲什麼if(!this.DesignMode不能在組件的構造函數中工作,而它在Load事件中工作? – Lukas 2009-07-22 22:55:50

+0

當你說它不起作用時,會發生什麼? – jasonh 2009-07-22 23:07:18

0

請問GetCountryList()是否設置成員變量?如果是這樣,請將該調用移至一個方法。屬性get訪問器和ToString()方法假定爲純粹的:前後的程序狀態必須相同。違反這個假設會導致各種問題,特別是設計者/調試者/運行時不一致。 Various rants have taken place,但最好的辦法是理解假設,遵循它,讓它在你調試時發揮你的優勢。

相關問題