【发布时间】:2016-02-02 20:50:21
【问题描述】:
我需要将 Listbox1 中的项目复制到 Listbox2。我正在使用这个 MOVE 代码 sn-p。对于单个项目(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]);
}
}
}
}
【问题讨论】:
-
您必须在调试器中运行它才能确定,但我怀疑
while(listBox1.SelectedItems.Count != 0)永远不会因为某种原因变为假。无论是从列表中删除项目还是从列表中删除项目都不会将其从SelectedItems集合中删除。
标签: c# listbox listboxitems