2013-10-24 3 views
1

До сих пор я выполнил передачу одного элемента выбора с одного фунта на lb2 и наоборот. Теперь проблема заключается в переносе всего списка данных с lb1 на lb2 и наоборот. если кто-то может помочь. Использование для цикла будет намного лучше.перенос предметов из одного списка на другой

Я использую следующий код:

private void add_Click(object sender, EventArgs e) 
    { 
     if (lb1.SelectedItem != null) 
     { 
      lb2.Items.Add(lb1.SelectedItem); 
      lb1.Items.Remove(lb1.SelectedItem); 
     } 
     else 
     { 
      MessageBox.Show("No item selected"); 
     } 
    } 

    private void remove_Click(object sender, EventArgs e) 
    { 
     if (lb2.SelectedItem != null) 
     { 
      lb1.Items.Add(lb2.SelectedItem); 
      lb2.Items.Remove(lb2.SelectedItem); 
     } 
     else 
     { 
      MessageBox.Show("No item selected"); 
     } 
    } 

    private void addall_Click(object sender, EventArgs e) //problem is here. adding all the items from lb1 to lb2 
    { 
     for (int i = 0; i < lb1.SelectedItems.Count; i++) 
     { 
      lB2.Items.Add(lb1.SelectedItems[i].ToString()); 
     } 
    } 

    private void removeall_Click(object sender, EventArgs e) //problem is here. adding all the items from lb2 to lb1 
    { 

    } 

ответ

2

Потому что вы хотите передать все из элементов из одного списка в другой не только выбранные элементы, которые вы должны петелькой для каждого элемента в списке и не только выбранные элементы.

Поэтому измените использование ListBox.SelectedItems на ListBox.Items, и ваш код будет работать так, как ожидается, если вы не забудете удалить элементы.

for (int i = 0; i < lb1.Items.Count; i++) 
{ 
    lB2.Items.Add(lb1.Items[i].ToString()); 
} 
lb1.Items.Clear(); 
+0

это сработало и как очистить lb1 после того, как товар переехал? –

+1

call 'lb1.Items.Clear()' * после * цикла. –

1

Вы могли бы сделать что-то вроде этого:

private void addall_Click(object sender, EventArgs e) 
{ 
    foreach (var item in lb1.Items) 
    { 
     lB2.Items.Add(item); 
    } 
} 

Это будет цикл через ваш список и добавить их все. Вы сделали бы обратный для lb2->lb1.

0

Просто перебирайте все элементы списка и добавьте каждый элемент в следующий список. В конце просто удалите все элементы.

foreach (var item in listBox1.Items) 
{ 
    listBox2.Items.Add(item); 
} 
listBox1.Items.Clear(); 
Смежные вопросы