Привязка объекта к Winforms ComboBox завершается неудачно, когда SelectedItem имеет значение NULL - PullRequest
2 голосов
/ 14 июля 2010

Я нашел много постов, уклоняющихся от этой темы, но ни одного, которые фактически касаются этого случая.

У меня есть ComboBox, связанный с List<State>, где State - это бизнес-объект, имеющий аббревиатуру и имясвойства:

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 отображается пустым, так как состояние не выбрано.Если я переключаюсь в ComboBox и пытаюсь выйти из него, SelectedItem имеет значение NULL, но я получаю исключение:

Object of type 'System.DBNull' cannot be converted to type 'State'.

Любая идея, почему BindingSource, кажется, принимает нулевой SelectedItemи сделать его System.DBNull, прежде чем пытаться присвоить его свойству Address.State?Это исключение возникает в OnValidating до того, как вызывается мой установщик состояний.Без отладчика похоже, что фокус застревает в ComboBox.

Я не хочу добавлять пустой объект State в мой источник данных с пустыми аббревиатурой и именем.Как я могу обойти эту проблему?

1 Ответ

3 голосов
/ 14 июля 2010

Это потому, что валидация управления является значением по умолчанию для класса Binding.Возможно, вы захотите изменить свойство Binding.DataSourceUpdateMode на DataSourceUpdateMode.OnPropertyChanged, чтобы значение назначалось только тогда, когда пользователь изменяет выбор поля со списком.

...