【问题标题】:C# ComboBox removing and addingC# ComboBox 删除和添加
【发布时间】:2018-04-09 09:28:59
【问题描述】:

我试图用相同的数据源填充 5 个不同的组合框。数据源来自一个类列表,其值如下(不是显示成员我用来填充与组合框相邻的文本框的值):

StandardList.Add(new Standard() { ID = 1, number = 91632, credits = 4, 
uniEntrance = "Y", assessmentType = "Ext", standardType = "AS" });

这就是我填充每个组合框的方式:

cboNumber1.BindingContext = new BindingContext();
 cboNumber1.ValueMember = "ID";
 cboNumber1.DisplayMember = "number";
 cboNumber1.DataSource = StandardList;
 cboNumber1.Refresh();

当我从一个特定的组合框中选择一个项目时,我想从剩余的组合框中删除相同的项目,然后如果该项目在焦点组合框中被取消选择,则将其重新添加到每个组合框中。我还没有弄清楚如何“添加”,但是“删除”部分适用于每个项目,除非我尝试使用

选择组合框中的最后一个项目
StandardList.RemoveAt(cboNumber1. SelectedIndex);

它会出现“ArgumentOutOfRangeException”。我的问题是如何解决这个问题?此外,如果我在焦点组合框中选择了一个特定项目,并且它从每个剩余的组合框中删除了相同的项目,如果我取消选择该特定项目,我将如何在相同的位置重新添加该特定项目到每个组合框中聚焦组合框?

这是我的第一篇文章,对于任何不好的做法,我深表歉意。另外请记住,我仍然是一名高中生,所以我的 c# 知识不是很广泛,我的编码实践可能效率低下/糟糕。我会很感激任何简单的答案/解决方案,即使这意味着效率低下。谢谢。

【问题讨论】:

  • 你能做到StandardList.Remove(cboNumber2.SelectedItem);吗?
  • 您收到ArgumentOutOfRangeException 的错误是因为cboNumber2.SelectedIndex 的值大于StandardList 中的项目数。更新StandardList 将影响所有组合框。您只想将其从其他组合框中删除。也许看看在组合框中添加和删除项目的不同方法。

标签: c# winforms combobox


【解决方案1】:

在第一个组合框的选择更改时,尝试使用列表类的“Where”设置其他组合框的过滤数据源。

喜欢: StandardList.Where(item => item.ID != cboNumber1.SelectedItem.Value);

这将返回一个过滤列表,将此列表分配给其他组合框。

这对你有用。我猜..

【讨论】:

  • 抱歉解决方案的延迟确认,但起初它没有用,所以我不得不弄清楚一些事情。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多