到目前为止,我已经完成了将一个选择项从一个lb1转移到lb2,反之亦然。现在问题是将整个数据列表从lb1转移到lb2,反之亦然。如果有人可以帮忙请。 使用for循环会好得多。
我正在使用以下代码:
private void add_Click(object sender, EventArgs e)
{
if (lb1.SelectedItem != null)
{
lb2.Items.Add(lb1.SelectedItem);
lb1.Items.Remove(lb1.SelectedItem);
}
else
{
MessageBox.Show("No item selected");
}
}
private void remove_Click(object sender, EventArgs e)
{
if (lb2.SelectedItem != null)
{
lb1.Items.Add(lb2.SelectedItem);
lb2.Items.Remove(lb2.SelectedItem);
}
else
{
MessageBox.Show("No item selected");
}
}
private void addall_Click(object sender, EventArgs e) //problem is here. adding all the items from lb1 to lb2
{
for (int i = 0; i < lb1.SelectedItems.Count; i++)
{
lB2.Items.Add(lb1.SelectedItems[i].ToString());
}
}
private void removeall_Click(object sender, EventArgs e) //problem is here. adding all the items from lb2 to lb1
{
}
答案 0 :(得分:2)
因为您要将所有项目从一个列表框转移到另一个列表框,不仅要为列表框中的每个项目而不仅是所选项目循环选定的项目。
因此,请将ListBox.SelectedItems
的使用情况更改为ListBox.Items
,并且您的代码应该按预期工作,假设您还记得删除这些项目。
for (int i = 0; i < lb1.Items.Count; i++)
{
lB2.Items.Add(lb1.Items[i].ToString());
}
lb1.Items.Clear();
答案 1 :(得分:1)
你可以这样做:
private void addall_Click(object sender, EventArgs e)
{
foreach (var item in lb1.Items)
{
lB2.Items.Add(item);
}
}
这将遍历您的列表并将它们全部添加。您可以对lb2->lb1
执行相反的操作。
答案 2 :(得分:0)
只需遍历列表中的所有项目,并将每个元素添加到下一个列表中。最后,只需删除所有项目。
foreach (var item in listBox1.Items)
{
listBox2.Items.Add(item);
}
listBox1.Items.Clear();