在listview中自下而上添加项目

时间:2011-12-01 18:27:40

标签: c# winforms listview

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

3 个答案:

答案 0 :(得分:2)

我在Windows窗体中添加了两个列表框。 listBox1和listBox2 我在第一个列表框中添加了七个项目{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();
    }

将标签贴在前面,将新标签放在底部。

答案 1 :(得分:0)

我想我明白你想做什么,我知道的唯一方法是通过用空项目预先填充你的第二个列表/ datagridview来伪造它,这样用户就什么都看不到了。然后,当您的用户从您的第一个框中进行选择时,您将使用新的真实项目替换最底部的空项目。

答案 2 :(得分:0)

试试我的代码。我正在使用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);
        }
    }