[[高手答疑]] .NET 平台 Winform 中两个 ComboBox 控件绑定同一数据源的问题

[复制链接]
查看: 91|回复: 0
发表于 2024-9-15 00:40:45 | 显示全部楼层 | 阅读模式
易博V9下载

今天在WinForms编程时遇到了一个问题:关于两个ComboBox控件绑定同一个数据源的问题。在我的窗体上有两个ComboBox,在Form1_Load事件中我对它们进行了数据绑定(具体代码如下)。但是在运行时出现了一个奇怪的现象:当我改变了ComboBox1的值时,ComboBox2的值也随之改变,而我没有设置ComboBox1_SelectedIndexChanged事件处理函数。

  1. private void Form1_Load(object sender, EventArgs e)
  2. {
  3. DataSet ds = getDs("select code, name from shp");
  4. comboBox1.DataSource = ds.Tables[0];
  5. comboBox1.ValueMember = "code";
  6. comboBox1.DisplayMember = "name";
  7. comboBox1.SelectedIndex = 0;
  8. comboBox2.DataSource = ds.Tables[0];
  9. comboBox2.ValueMember = "code";
  10. comboBox2.DisplayMember = "name";
  11. comboBox2.SelectedIndex = 0;
  12. }
复制代码

解决方法:

  1. DataSet ds = getDs("select code, name from shp");
  2. comboBox1.DataSource = ds.Tables[0];
  3. comboBox1.ValueMember = "code";
  4. comboBox1.DisplayMember = "name";
  5. comboBox1.SelectedIndex = 0;
  6. comboBox2.DataSource = (DataSet)ds.Clone();
  7. comboBox2 Tables[0].Copy();
  8. comboBox2.ValueMember = "code";
  9. comboBox2.DisplayMember = "name";
  10. comboBox2.SelectedIndex = 0;
复制代码

请注意,这里的解决方案示例中使用了ds.Clone()和Tables[0].Copy(),但实际上DataSet类并没有直接提供Clone()或Copy()方法。通常情况下,需要创建一个新的DataSet实例并使用Fill方法填充数据,或者通过其他方式复制数据表。如果您确实有一个实现了这些功能的自定义版本,请确保在实际应用中正确地使用它。
易博软件介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|Archiver|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表