Combobox手动绑定

时间:2009-12-31 14:40:06

标签: c# .net winforms

我正在尝试做一些我认为并不复杂但仍然存在的事情 - 这种直接的方法似乎不起作用......

我创建了一个用户控件并将其绑定到数据表,然后我创建了一个新的Binding,并以下列方式将另一个对象绑定到同一个组合(SelectedValue更精确):

this.cboValue.DataSource = dt;
this.cboValue.ValueMember = "ID";
this.cboValue.DisplayMember = "Text";
valueBinding = new Binding("SelectedValue", value, "Value", false, DataSourceUpdateMode.OnPropertyChanged);
this.cboValue.DataBindings.Add(valueBinding);
valueBinding.BindingComplete += new BindingCompleteEventHandler(valueBinding_BindingComplete);

在需要时更新对象非常正常。 然后我需要使用不同的方法进行绑定,因为需要手动填充一些控件,所以我创建了一个新的业务对象并尝试将该对象的列表/数组绑定到控件。

事情就是设置ValueMember,我得到DBNull.Value而不是设置绑定时的目标值。

我确实设法创建了一个解决方法 - 为业务对象的列表/数组创建一个新的数据表,并保持对表的绑定,但仍然看起来很麻烦。

有人尝试过类似的东西吗?

1 个答案:

答案 0 :(得分:2)

我认为你的主要问题是数据表实现了标准数组/ List没有的一些接口。

尝试使用BindingList<>。 并让你的类实现INotifyPropertyChanged接口。

我希望它能解决你所有的问题