【问题标题】:changing the value of one combobox causes the value of the other one changes改变一个组合框的值会导致另一个组合框的值改变
【发布时间】:2021-01-20 05:12:32
【问题描述】:

我是两个组合框,其中填充了如下表的视图

  recieverComboBox.DataSource = myDataSet.Tables[0].DefaultView; 
  recieverComboBox.DisplayMember = "UserPosition";
  recieverComboBox.ValueMember = "ID";

  recieverUnReadComboBox.DataSource = myDataSet.Tables[0].DefaultView;
  recieverUnReadComboBox.DisplayMember = "UserPosition";
  recieverUnReadComboBox.ValueMember = "usr_Id";

当我改变每一个的值时,另一个的值会自动改变。这是为什么呢?

【问题讨论】:

  • 你有为 selectedindexchanged 事件编写的事件处理程序吗?
  • @ChetanRanpariya:是的,我有

标签: c# visual-studio visual-studio-2010


【解决方案1】:

这里有两种方法可以避免这个问题。

方案一:

使用 BindingSource 作为 ComboBox 的 DataSource。

recieverComboBox.DataSource = new BindingSource(myDataSet.Tables[0].DefaultView, null);
recieverComboBox.DisplayMember = "UserPosition";
recieverComboBox.ValueMember = "ID";

recieverUnReadComboBox.DataSource = new BindingSource(myDataSet.Tables[0].DefaultView, null);
recieverUnReadComboBox.DisplayMember = "UserPosition";
recieverUnReadComboBox.ValueMember = "usr_Id";

解决方案 B:

调用方法DataTable.Copy

recieverComboBox.DataSource = myDataSet.Tables[0].Copy();
recieverComboBox.DisplayMember = "UserPosition";
recieverComboBox.ValueMember = "ID";

recieverUnReadComboBox.DataSource = myDataSet.Tables[0].Copy();
recieverUnReadComboBox.DisplayMember = "UserPosition";
recieverUnReadComboBox.ValueMember = "usr_Id";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2014-11-22
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多