Я нашел много сообщений, которые уклоняются от этой темы, но ни один из них не касается этого случая.
У меня есть ComboBox, привязанный к List<State>
, где State — это бизнес-объект со свойствами Abbreviation и Name:
this._stateComboBox.DataSource = ((Address)this._addressBindingSource.DataSource).States;
this._stateComboBox.DisplayMember = "Abbreviation";
this._stateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedItem", this._addressBindingSource, "State"));
Первоначально поле со списком отображается пустым, поскольку состояние не выбрано. Если я перехожу к ComboBox и пытаюсь выйти, SelectedItem имеет значение null, но я получаю исключение:
Object of type 'System.DBNull' cannot be converted to type 'State'.
Любая идея, почему BindingSource, кажется, берет null SelectedItem и делает его System.DBNull, прежде чем пытаться присвоить его свойству Address.State? Это исключение возникает в OnValidating перед вызовом моего установщика состояния. Без отладчика похоже, что фокус застревает на ComboBox.
Я не хочу добавлять пустой объект State в свой источник данных с пустыми аббревиатурой и именем. Как я могу обойти эту проблему?