今天在WinForms编程时遇到了一个问题:关于两个ComboBox 控件绑定同一个数据源的问题。在我的窗体上有两个ComboBox ,在Form1_Load 事件中我对它们进行了数据绑定(具体代码如下)。但是在运行时出现了一个奇怪的现象:当我改变了ComboBox1 的值时,ComboBox2 的值也随之改变,而我没有设置ComboBox1_SelectedIndexChanged 事件处理函数。
-
- private void Form1_Load(object sender, EventArgs e)
- {
- DataSet ds = getDs("select code, name from shp");
-
- comboBox1.DataSource = ds.Tables[0];
- comboBox1.ValueMember = "code";
- comboBox1.DisplayMember = "name";
- comboBox1.SelectedIndex = 0;
-
- comboBox2.DataSource = ds.Tables[0];
- comboBox2.ValueMember = "code";
- comboBox2.DisplayMember = "name";
- comboBox2.SelectedIndex = 0;
- }
复制代码
解决方法:
-
- DataSet ds = getDs("select code, name from shp");
-
- comboBox1.DataSource = ds.Tables[0];
- comboBox1.ValueMember = "code";
- comboBox1.DisplayMember = "name";
- comboBox1.SelectedIndex = 0;
-
- comboBox2.DataSource = (DataSet)ds.Clone();
- comboBox2 Tables[0].Copy();
- comboBox2.ValueMember = "code";
- comboBox2.DisplayMember = "name";
- comboBox2.SelectedIndex = 0;
复制代码
请注意,这里的解决方案示例中使用了ds.Clone()和Tables[0].Copy(),但实际上DataSet类并没有直接提供Clone()或Copy()方法。通常情况下,需要创建一个新的DataSet实例并使用Fill方法填充数据,或者通过其他方式复制数据表。如果您确实有一个实现了这些功能的自定义版本,请确保在实际应用中正确地使用它。 |