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