多个ComboBox绑定同一数据源的问题及解决方法

本文介绍了解决WinForm中多个ComboBox绑定同一数据源时出现的联动问题的方法。通过复制数据源为每个ComboBox提供独立的数据,避免了选择时的相互影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题表现:

winform中,多个ComboBox 绑定同一个数据源时,选择其中一个ComboBox,其他的也跟着变成同一选项.

解释:

这种 问题主要是因为combobox绑定了同一个数据源,对数据源的操作导致了其他控件改变.但是在有些情况下, 我们确实需要让多个combobox控件绑定同一个数据源,但不想让他们联动.这样就必须想办法让他们分别对应一个数据源.(如下图.画的比较恶心.差不多一个意思.)其中数据源自然都是同一个,只是绑定的方式略有改变.

解决方法:

把DataTable的数据Copy出来,给每一个ComboBox的数据源。
例如:
DataTable tableSource ; 
//取数据 
ComboBox1.DataSource=tableSource.Copy(); 
ComboBox2.DataSource=tableSource.Copy(); 

------------------------------------------------------------------------------------------------------------------------------------------------------

DataTable绑定时:

多ComboBox同时面对一个对象

內存中實際上只是存儲了一份共用的DataSource(DataTable or DataSet)

解决:
把DataTable的数据Copy出来,给每一个ComboBox的数据源。
例如:
DataTable tableSource ; 
//取数据 
ComboBox1.DataSource tableSource.Copy(); 
ComboBox2.DataSource tableSource.Copy();  

List<T>泛型绑定时:

List<KqiPageSetupInfo> noColumnList =数据库得的值

//插入空选项

KqiPageSetupInfo setup = new KqiPageSetupInfo();
            setup.PageSetupid = "";
            setup.Title = "";
            noColumnList.Insert(0, setup);

解决:

           KqiPageSetupInfo[] noColum1 = noColumnList.ToArray();//复制一个对象数组
            this.combTitle.DisplayMember = "title";
            this.combTitle.ValueMember = "pageSetupid";
            this.combTitle.DataSource = noColum1;

            KqiPageSetupInfo[] noColum2 = noColumnList.ToArray();
            this.combKeyWord.DisplayMember = "title";
            this.combKeyWord.ValueMember = "pageSetupid";
            this.combKeyWord.DataSource = noColum2;


其他方法:http://www.cnblogs.com/xocean/archive/2011/01/14/combobox.html 

参考原文:http://hi.baidu.com/suralauto/blog/item/4f709df70c90962c730eec40.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值