我正在使用c#.net windows表单应用程序。我有两个组合框A和B.我用一些值来制作A。现在,如果我从A中选择任何一个值,我应该能够用除了所选项目之外的所有A项填充B.
答案 0 :(得分:1)
在选定的项目中更改A的事件,添加清除B的代码,然后循环回A的项目集合中的每个项目,并将其添加到B,只要当前项目的索引与SelectedItem的索引不同即可。甲
类似(伪代码,未测试)
b.Items.Clear;
for(int i=0; i<A.Items.Count; i++)
{
if (i!=A.SelectedItemIndex)
{
b.Items.Add(A.Items[i]);
}
}
或
B.Items.Clear;
foreach(object o in A.Items)
{
b.Items.Add(o);
}
b.Items.Remove(A.SelectedItem);
也应该这样做。
答案 1 :(得分:1)
这是一个简单的例子,说明如何解决这个问题:
private void Form1_Load(object sender, EventArgs e)
{
AComboBox.Items.Add("1");
AComboBox.Items.Add("2");
AComboBox.Items.Add("3");
AComboBox.Items.Add("4");
AComboBox.Items.Add("5");
AComboBox.Items.Add("6");
}
private void AComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
BComboBox.Items.Clear();
//* One way.
foreach (object obj in AComboBox.Items.Cast<object>().Where(obj => !obj.Equals(AComboBox.Text)))
{
BComboBox.Items.Add(obj);
}
//* Another way (if possible duplicates in A).
for (int i = 0; i < AComboBox.Items.Count; ++i)
{
if (i != AComboBox.SelectedIndex)
BComboBox.Items.Add(AComboBox.Items[i]);
}
}
答案 2 :(得分:1)
也许你想要这个:
for (int i = 0; i < comboBox1.Items.Count;i++)
{
if ((comboBox1.SelectedIndex)!=i)
{
comboBox2.Items.Add(comboBox2.Items[i]);
}
}
你必须在添加新项目之前清除comboBox2
答案 3 :(得分:0)
因为你说两者都有相同的价值。在第一个选定的事件上。获取所选项目并从第二个组合中删除它。简单