У меня есть UserControl с выпадающим списком. Этот combobox заполняется из 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
инициализируется в программе, но это не помогает дизайнеру.
Вопрос в том, как (когда, на каком событии) я должен заполнить ComboBox (= список загрузки из xml), чтобы иметь возможность отображать мой элемент управления в дизайнере.
Если возможно, вы хотите проверить this.DesignMode
, а затем просто не загружать ComboBox во время разработки.
Установил ли GetCountryList()
переменную-член? Если это так, переместите этот вызов на метод. Атрибуты свойств get
и метод ToString()
считаются чистыми: состояние программы до и после должно быть идентичным. Нарушение этого предположения может вызвать всевозможные проблемы, особенно несоответствие конструктора/отладчика/времени выполнения. Были разные разборы, но самое лучшее, что нужно сделать, это понять предположение, следовать ему и позволить ему работать в ваших интересах при отладке.