我创建了一个带有组合框的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中的加载列表)以便能够在设计器中显示我的控件。
答案 0 :(得分:4)
如果可能,您要检查this.DesignMode
,然后在设计时不加载ComboBox。
答案 1 :(得分:0)
GetCountryList()
是否设置成员变量?如果是,请将该调用移至方法。属性get
访问器和ToString()
方法假定为纯:程序状态之前和之后必须相同。违反此假设可能会导致各种问题,尤其是设计人员/调试器/运行时不一致。 Various rants have taken place,但最好的办法是理解假设,遵循它,并在调试时让它发挥作用。