gpt4 book ai didi

c# - 当 SelectedItem 为 null 时,对象绑定(bind)到 Winforms ComboBox 失败

转载 作者:行者123 更新时间:2023-11-30 16:33:23 26 4
gpt4 key购买 nike

我发现很多帖子都在回避这个话题,但没有一个真正解决这个问题。

我有一个 ComboBox 绑定(bind)到 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 显示空白,因为没有选择任何状态。如果我切换到 ComboBox 并尝试退出,则 SelectedItem 为空,但出现异常:

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

知道为什么 BindingSource 在尝试将其分配给 Address.State 属性之前似乎采用 null SelectedItem 并使其成为 System.DBNull 吗?在调用我的 State setter 之前,此异常发生在 OnValidating 中。在没有调试器的情况下,焦点似乎停留在 ComboBox 上。

我不想向我的数据源添加一个空的缩写和名称的空状态对象。我该如何解决这个问题?

最佳答案

这是因为控件验证是 Binding 类的默认设置。您可能希望将 Binding.DataSourceUpdateMode 属性更改为 DataSourceUpdateMode.OnPropertyChanged,以便仅在用户更改组合框选择时分配一个值。

关于c# - 当 SelectedItem 为 null 时,对象绑定(bind)到 Winforms ComboBox 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3249041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com