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