Мне нужно копировать элементы из спискаbox1 в Listbox2. Я использую этот фрагмент кода MOVE. Для единственного элемента (btnAdd1) я просто закомментирую строку «Удалить», и все работает так, как ожидалось. Однако для множественного select (btnAdd2), если я прокомментирую строку «Удалить», программа зависает ... однако, если я ее оставлю, она работает. Есть идеи?C# Listbox Копировать не перемещать
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]);
}
}
}
}
Вы должны запустить его в отладчике, чтобы быть уверенным, но я подозреваю, что 'в то время как (listBox1.SelectedItems.Count! = 0)' никогда не становится ложным по какой-то причине. Либо это, либо удаление элемента из списка не вынимает его из коллекции 'SelectedItems'. –