使用两个组合框

时间:2010-04-27 11:17:57

标签: c#

我正在使用c#.net windows表单应用程序。我有两个组合框A和B.我用一些值来制作A。现在,如果我从A中选择任何一个值,我应该能够用除了所选项目之外的所有A项填充B.

4 个答案:

答案 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)

因为你说两者都有相同的价值。在第一个选定的事件上。获取所选项目并从第二个组合中删除它。简单