将项目从一个列表框转移到另一个列表框

时间:2013-10-24 21:16:01

标签: c# winforms listbox

到目前为止,我已经完成了将一个选择项从一个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
    {

    }

3 个答案:

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