我在Win Form上有几个ComboBox,我总是将列表设置为DataSource,如下所示:
aComboBox.DataSource = someList;
foreach(Object obj in aComboBox.Items) {
// do something
}
这对我来说非常好,但是,在尝试重置这样的数据时遇到了一些麻烦:
aComboBox.DataSource = null;
aComboBox.DataSource = someOtherList;
foreach(Object obj in aComboBox.Items) {
// do something else
}
DataSource已成功重置,但不会触发重置Items。我试着打电话给aComboBox.Items.Clear()
清理物品,没有重置。
我错过了什么吗?
答案 0 :(得分:2)
看起来这就是因为表单是由另一个表单“拥有”的,我在父表单中使用它child.Show(this)
以方便从子表单中的父表单访问方法。
此外,使用BindingSource来管理数据绑定也可以解决问题。这就是我所做的:
BindingSource bs = new BindingSource;
aComboBox.DataSource = bs;
bs.DataSource = someList;
//
// after some processing
//
bs.DataSource = null;
bs.DataSource = someOtherList;
答案 1 :(得分:0)
尝试此序列中的步骤
cmbBox.Items.Clear();
cmbBox.DataSource = SomeOtherList;
cmbBox.DataBind();