2011-12-22 243 views
2

我正在使用C#在Windows窗體上工作。我有兩個名爲listBox1listBox2的列表框。我在這兩個列表框中都有4個項目。我可以從兩個列表框中選擇多個項目。我也有兩個按鈕。點擊button1,我必須將多個選定的項目從listBox1移動到listBox2。同樣,在點擊button2時,我必須將多個選定項目從listBox2移至listBox1。它如何在C#中完成?如何將多個選定項從一個列表框移動到另一個列表框

在此先感謝。

+0

什麼是列表框中的對象?只有字符串?或一個特定的對象? – 2011-12-22 17:52:31

+0

listboxes中的對象是字符串 – 2011-12-22 18:03:18

回答

2

A ListBox有一個SelectedItems屬性,您可以使用該屬性複製按鈕的單擊事件處理程序中的項目。就像這樣:

foreach(var item in listBox1.SelectedItems) 
{ 
    listBox2.Items.Add(item); 
} 
2
private void Move(ListControl source, ListControl destination) 
{ 
     List<ListItem> remove = new List<ListItem>(); 
     foreach(var item in source.Items) 
     { 
      if(item.Selected == false) continue; 
      destination.Items.Add(item); 
      remove.Add(item); 
     } 
     foreach(var item in remove) 
     { 
      source.Items.Remove(item); 
     } 
} 

那麼你可以這樣調用

Move(listbox1, listbox2); 
//or 
Move(listbox2, listbox1); 
+0

listcontrol不具有Items屬性。將其更改爲列表框 – nawfal 2012-07-09 11:29:46

3
private void MoveListBoxItems(ListBox source, ListBox destination) 
{   
    ListBox.SelectedObjectCollection sourceItems = source.SelectedItems; 
    foreach (var item in sourceItems) 
    { 
     destination.Items.Add(item); 
    } 
    while (source.SelectedItems.Count > 0) 
    { 
     source.Items.Remove(source.SelectedItems[0]); 
    } 
} 

用途: 在你的移動click事件從1到2按鈕:

MoveListBoxItems(listBox1, listBox2); 

將它們移回:

MoveListBoxItems(listBox2, listBox1); 
2

根據這個問題How to remove multiple selected items in ListBox?

private void button1_Click(object sender, EventArgs e) 
{ 
    for(int x = listBox1.SelectedIndices.Count - 1; x>= 0; x--) 
    { 
     int idx = listBox1.SelectedIndices[x]; 
     listBox2.Items.Add(listBox1.Items[idx]); 
     listBox1.Items.RemoveAt(idx); 
    } 
} 

你可以這樣做。

1
private void button1_Click(object sender, EventArgs e) 
    { 
     foreach (var item in listBox1.SelectedItems) 
     { 
      listBox2.Items.Add(item); 
     } 
     for (int s = 0; s < listBox1.Items.Count; s++) 
     { 
      for (int t = 0; t < listBox2.Items.Count; t++) 
      { 
       if (listBox1.Items[s].ToString().Equals(listBox2.Items[t].ToString())) 
       { 
        listBox1.Items.RemoveAt(s); 
       } 
      } 
     } 
    } 
0
private void move(ListBox source, ListBox destination) { 
    for (int i = 0; i <= source.Items.Count-1; i++) 
     { 
      destination.Items.Add(source.Items[i]); 
     } 
    source.Items.Clear(); 
} 
相關問題