在列表视图中从下往上添加项目

本文关键字:添加 项目 列表 视图 | 更新日期: 2023-09-27 18:16:28

我目前有两个列表我正在工作。一个装满了物品,另一个是空的。当用户双击填充列表中的一个项目时,它应该将该项目添加到空/第二个列表中,但不是将其添加到列表的顶部,而是将新添加的项目添加到底部。所以这些项目应该从下往上加。我正在使用datagridview,但我愿意使用listview/listbox,只要它能完成工作。

在列表视图中从下往上添加项目

我在一个windows窗体中添加了两个列表框。listBox1和listBox2我在第一个列表框中添加了Seven Items {One,Two,Three…}我在

中添加了双击事件处理程序
  listBox2.Items.Add(listBox1.SelectedItem);

添加到列表底部的新项目,这听起来像是您想要的。我知道同样的事情与DataGridView一起工作。

您是否希望将它们物理地添加到框的底部,在顶部留下空白,直到填充?这就是你想要做的吗?

对不起,这不是一个真正的答案,我想我没有足够的代表来作为评论回复。


编辑:好的,我想我现在知道你的答案了为你的项目添加一个列表框,它不一定是一个列表框,你的Datagridview会工作得很好。

尝试使用FlowControlPanel和更改对齐到自下而上,听起来很容易,好吧,它是。给它添加标签,像这样

//add a label to the flow control panel when you double click on an item
private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        Label label = new Label();
        label.Text = listBox1.SelectedItem.ToString();
        label.Click += new EventHandler(label_Click);
        label.AutoSize = true;
        flowLayoutPanel1.Controls.Add(label);
        label.BringToFront();
    }
    //Will remove the label if you click on it.
    void label_Click(object sender, EventArgs e)
    {
        ((Label)sender).Click -= new EventHandler(label_Click);
        ((Label)sender).Dispose();
    }

把标签放在前面,把新标签放在下面。

我想我明白你想做什么,我知道的唯一方法是通过预填充你的第二个列表/datagridview与空项目,所以用户看不到任何东西。然后,当用户从第一个框中进行选择时,将最底部的空项替换为新的实际项。

试试我的代码。我用的是c# 3.5

    private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        if (listBox1.SelectedItem != null)
        {
            int index = listBox2.Items.Count>0?listBox2.Items.Count:0;
            listBox2.Items.Insert(index, listBox1.SelectedItem);
            listBox1.Items.Remove(listBox1.SelectedItem);
        }
    }