【问题标题】:transfer items from one listbox to another将项目从一个列表框转移到另一个
【发布时间】:2013-10-24 21:16:01
【问题描述】:

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

    }

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

    因为您希望将所有项从一个列表框中传输到另一个列表框中,不仅是所选项目,您必须为列表框中的每个项目循环,而不仅仅是所选项目。

    因此,将ListBox.SelectedItems 的用法更改为ListBox.Items,假设您还记得删除这些项目,您的代码应该会按预期工作。

    for (int i = 0; i < lb1.Items.Count; i++)
    {
        lB2.Items.Add(lb1.Items[i].ToString());
    }
    lb1.Items.Clear();
    

    【讨论】:

    • 它工作了,如何在所有项目移动后清除 lb1?
    • 在循环之后调用lb1.Items.Clear()
    【解决方案2】:

    你可以这样做:

    private void addall_Click(object sender, EventArgs e)
    {
        foreach (var item in lb1.Items)
        {
            lB2.Items.Add(item);
        }
    }
    

    这将遍历您的列表并将它们全部添加。你会为lb2-&gt;lb1做相反的事情。

    【讨论】:

      【解决方案3】:

      只需遍历列表的所有项目并将每个元素添加到下一个列表。最后只需删除所有项目。

      foreach (var item in listBox1.Items)
      {
          listBox2.Items.Add(item);
      }
      listBox1.Items.Clear();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多