UserControl无法在Designer中显示 - null对象引用

时间:2009-07-22 21:40:40

标签: c# .net visual-studio-2008 user-controls

我创建了一个带有组合框的UserControl。这个组合框是从xml填充的,当它不存在时,它从资源文件加载 它在程序中工作正常,但它无法在设计器中显示 - 它说:“对象引用未设置为对象的实例。”

在负责从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中的加载列表)以便能够在设计器中显示我的控件。

2 个答案:

答案 0 :(得分:4)

如果可能,您要检查this.DesignMode,然后在设计时不加载ComboBox。

答案 1 :(得分:0)

GetCountryList()是否设置成员变量?如果是,请将该调用移至方法。属性get访问器和ToString()方法假定为纯:程序状态之前和之后必须相同。违反此假设可能会导致各种问题,尤其是设计人员/调试器/运行时不一致。 Various rants have taken place,但最好的办法是理解假设,遵循它,并在调试时让它发挥作用。