我需要将Listbox1中的项目复制到Listbox2。我正在使用此MOVE代码段。对于单个项目(btnAdd1),我只是注释掉了'删除'线和所有工作按预期。但是对于多重选择(btnAdd2),如果我注释掉了'删除'该程序挂起...然而,如果我把它留下来,它的工作原理。有什么想法吗?
private void btnAdd1_Click_1(object sender, EventArgs e)
{
if (listBox1.SelectedIndex == -1)
{
MessageBox.Show("Please Select an Item");
}
else
{
if (!listBox2.Items.Contains(listBox1.SelectedItem))
{
listBox2.Items.Add(listBox1.SelectedItem);
}
}
}
private void btnAdd2_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex == -1)
{
MessageBox.Show("Please Select Multiple Items");
}
else
{
while(listBox1.SelectedItems.Count != 0)
{
if (!listBox2.Items.Contains(listBox1.SelectedItem))
{
listBox2.Items.Add(listBox1.SelectedItems[0]);
// If this line is missing, the program hangs
listBox1.Items.Remove(listBox1.SelectedItems[0]);
}
}
}
}
答案 0 :(得分:0)
你有一个while循环。如果删除该行,则while循环的条件将为true。 你的代码应该是这样的:
foreach(var item in listbox1.SelectedItems)
if (!listbox2.items.contain(item)
listbox2.items.add(item);
答案 1 :(得分:0)
谢谢大家,我已经采用了其中的一些方法,现在一切正常,就像我想要的那样。这是最终的代码。
private void btnAdd2_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex == -1)
{
MessageBox.Show("Please Select Multiple Items");
}
else
{
if (!listBox2.Items.Contains(listBox1.SelectedItem))
{
foreach (var item in listBox1.SelectedItems)
{
listBox2.Items.Add(item);
}
}
}
}