【发布时间】: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将影响所有组合框。您只想将其从其他组合框中删除。也许看看在组合框中添加和删除项目的不同方法。