Din*_*kti 3 c# combobox winforms
我正在ComboBox动态创建一个数组,而DataSourcefor all ComboBox是一个包含一些整数的整数列表.但是当我在任何一个组合框中更改值X时,所有其他组合值都会重置为值X.
由于您将所有组合框绑定到同一个数据源(单个列表),因此它们使用单个数据源BindingManagerBase.
因此,当您从其中一个组合框中选择项目时,Position共享绑定管理器基础的当前更改,并且所有组合框都会转到其共享数据源的该位置.
要解决此问题,您可以将它们绑定到不同的数据源:
您可以将它们绑定到yourList.ToList()任何其他列表,例如不同的列表BindingList<T>.
combo1.DataSource = yourList.ToList();
combo2.DataSource = yourList.ToList();
Run Code Online (Sandbox Code Playgroud)您可以BindingSource为它们使用不同的设置,并DataSource从BindingSource开始设置列表
combo1.DataSource = new BindingSource { DataSource= yourList};
combo2.DataSource = new BindingSource { DataSource= yourList};
Run Code Online (Sandbox Code Playgroud)另外作为另一种选择:
您可以BindingContext为组合框使用不同的.这种方式即使将它们绑定到单个列表,它们也不再同步.
combo1.BindingContext = new BindingContext();
combo1.DataSource = yourList;
combo2.BindingContext = new BindingContext();
combo2.DataSource = yourList;
Run Code Online (Sandbox Code Playgroud)事实上,表单的所有控件都使用共享BindingContext.当您将2个控件绑定到同一个数据源时,它们也会以相同的BindingManagerBase方式使用相同的方法,例如,当您移动到下一个记录时,所有控件都会移动到下一个记录的下一个记录的显示值.这与您从组合框中看到的行为相同.对使用相同控件的控件进行同步BindingManagerBase是期望的行为.无论如何,有时我们不需要这样的行为.该帖子分享了原因和解决方案.
| 归档时间: |
|
| 查看次数: |
1286 次 |
| 最近记录: |