我正在构建一个winforms应用程序,我有两个具有相同数据源的组合框,数据源是DataTable。现在,当我在一个组合框中选择一个值时,另一个组合框的值也会改变。有没有办法让它改变而不影响其他?具有相同数据源的两个控件的问题
回答
在这种情况下,您可以创建两个不同的绑定源,一个绑定到每个组合框。如果您将每个绑定数据源的DataSource
属性设置为您的DataTable
,那么您的组合框将独立工作,同时仍显示相同的数据。
的初始化会是这样的:
// Initialization of the binding sources(assuming dataTable is a populated DataTable)
bindingSource.DataSource = dataTable;
bindingSource2.DataSource = dataTable;
的WinForms的结合系统检测两个组合框被挂接到相同的数据源和是(有益)跨越两个同步变化。
为了避免这种情况,您需要确保每个组合框都有独特的数据源。
一种方法是使用工具箱中的相应非可视组件(BindingSource)。
另外,如果您正在设置与代码的绑定,则使用BindingList。请注意,有一个陷阱用的BindingList - 它可以充当包装:
[的]的BindingList构造函数创建周围的原始名单的包装集合。它不创建包含相同元素的新列表。 (我从来没有见过这种记录,但已经用Reflector验证过)。 - http://www.nichesoftware.co.nz/blog/200809/databinding-lists
相反的:
editDebitAccount.DataSource = accountsList;
editCreditAccount.DataSource = accountsList;
使用本:
editDebitAccount.DataSource = new BindingList(accountsList);
editCreditAccount.DataSource = new BindingList(accountsList);
>> WinForms绑定系统正在检测到两个组合框都连接到相同的DataSource,并且(有用地)同步跨越这两个变化。<<我明白了,但是为什么?这是没有意义的,因为组合框包含选定的项目,而不是数据源。 – TheBlastOne 2011-09-01 08:08:43
这可能是令人惊讶的,但它是它的工作方式。当两个组合框具有相同的DataSource集合时,它们最终会共享相同的[CurrencyManager](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.currencymanager.aspx)。 CurrencyManager指定列表中的“当前”位置,并且两个组合框同步。 – Bevan 2011-09-01 09:06:42
- 1. 奇怪的两个控件/相同的数据源问题
- 2. d3中有两个数据源的工具提示问题
- 3. 访问 - 合并具有相同结构的两个数据库
- 4. WPF:当在两个控件上使用相同的数据源时出现奇怪的数据绑定问题
- 5. 具有相同数据的两个MYSQL表具有不同的大小
- 6. 具有相同数据但不同类型的两个向量
- 7. 来自两个具有相同列名的表的数据
- 8. 合并两个数据库具有相同的设计(MySQL的)
- 9. 两个选择具有相同的数据
- 10. 比较两个具有相同数据名称的饼图(Highcharts)
- 11. 使两个输入具有相同的数据值?
- 12. 从两个具有相同列的表中选择数据
- 13. 检查两个QSharedPointer具有相同的数据
- 14. 如何使用具有相同别名(modx)的两个资源?
- 15. 具有相同列的两个TableLayout
- 16. 两个UIView具有相同的锚点
- 17. 两个Datagrids具有相同的源,但输出的结果略有不同
- 18. 运行两个javascriptscript文件具有相同的函数名称
- 19. 具有相同函数名称的两个文件Python
- 20. 问题与两个相同的服务
- 21. 检查两个整数具有相同的“个位数”
- 22. 在两个不同的DataContext上的相同控件中的数据绑定
- 23. MySQL的InnoDB的死锁问题有两个相同的查询(不同参数)
- 24. 两个相连的表中有相同的记录具有相同的外键
- 25. 具有数据类型属性的自定义控件问题
- 26. 在数据库之间移动两个具有相同ID的数据库
- 27. 我如何反序列化两个具有不同标签但具有相同数据的xml文件
- 28. 两个活动中的两个ListViews具有相同的值
- 29. 让不同的asp.net控件通过相同的数据源相互绑定
- 30. 的WinForms - VB.NET - 传递相同的列表作为数据源为两个不同的列表框创建问题
嗨特里,如果您从您的问题的代码标签,它会更简单易读。 :) – 2009-11-01 18:54:10