C#两个列表框和两个列表

时间:2015-12-10 21:50:53

标签: c# list listbox

我正试图让两个列表框一起工作。 我正在使用Listbox1,Listbox2,List1和List2(对于此示例),这两个列表用于进一步的目的,因此需要包含它们。

Listbox2应包含List2的所有内容,listbox1应包含List1的所有内容,但List2中的项目除外。 我一直在尝试很多不同的方式,但我似乎无法通过。 目前,Listbox2已经完美填充和更新,但我似乎无法使Listbox1相应地工作。

我尝试过的选项(可能写错了): - 将List1的所有内容添加到Listbox1,然后删除List2包含的所有内容 - 遍历每个List1项并检查它是否存在于List2中。只有在没有的情况下才添加。

提前致谢!

我知道我在这里添加双打。我尝试了很多东西并在尝试新事物时删除了所有东西(不要问为什么,坏习惯)

(AddToListbox是一种工作方法。)

if (classroom.members.Count <= 0)
        {
            foreach (Student student in repository.students)
            {
                AddtoListbox(Listbox1, student);
            }
        }
        else
        {
            foreach (Student student in repository.students)
            {
                foreach (Student studentInClass in classroom.members)
                {
                    if (student.LastName != studentInClass.LastName || student.FirstName != studentInClass.FirstName)
                    {
                        AddtoListbox(Listbox1, student);
                    }
                }
            }
        }

2 个答案:

答案 0 :(得分:1)

在List1上尝试Except

listbox1.AddRange(List1.Except(List2).Cast<object>.ToArray());

答案 1 :(得分:1)

我在你的代码上等了一小段样本。我有一个按钮,填充两个List<int>。第一个列表是1-20,而第二个列表是5-9。你会看到它以5-9和Listbox1填充Listbox2 1-4和10-20。

private void button1_Click(object sender, EventArgs e)
{
     list1 = new List<int>(Enumerable.Range(5,5));
     list2 = new List<int>(Enumerable.Range(1,20));

     foreach (int num1 in list1)
     {
         listBox1.Items.Add(num1);
     }

     foreach (int num2 in list2)
     {
         bool numFound = false;
         foreach (int num1 in list1)
         {
             if (num2 == num1)
             {
                 numFound = true;
                 break;
             }
         }
         if (!numFound)
             listBox2.Items.Add(num2);
     }
}

不是最有说服力的代码,但它完成了工作。