2013-10-24 168 views
1

到目前爲止,我已經完成了將一個選擇項從一個lb1轉移到lb2,反之亦然。現在問題是將整個數據列表從lb1轉換爲lb2,反之亦然。如果有人可以幫忙請。 使用for循環會好很多。將項目從一個列表框轉移到另一個列表框

我用下面的代碼:

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,並且您的代碼應該按預期工作,假設您還記得刪除這些項目。通過您的列表

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

這將循環,並添加他們都:

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

它的工作原理和如何清除所有物品移動後的lb1? –

+1

在循環後調用'lb1.Items.Clear()'*。 –

1

你可以做這樣的事情。你會做相反的lb2->lb1

0

只需遍歷列表中的所有項目並將每個元素添加到下一個列表。最後只需刪除所有項目。

foreach (var item in listBox1.Items) 
{ 
    listBox2.Items.Add(item); 
} 
listBox1.Items.Clear(); 
相關問題