我正试图让两个列表框一起工作。 我正在使用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);
}
}
}
}
答案 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);
}
}
不是最有说服力的代码,但它完成了工作。