Как переместить несколько выбранных элементов из одного списка в другое? - PullRequest
3 голосов
/ 22 декабря 2011

У меня есть два списка с именами listBox1 и listBox2 с 4 элементами (строками) в обоих списках. Я могу выбрать несколько элементов из обоих списков. У меня также есть две кнопки.

При нажатии button1 мне нужно переместить несколько выбранных элементов из listBox1 в listBox2. Аналогично, при нажатии button2 мне нужно переместить несколько выбранных элементов из listBox2 в listBox1.

Как это можно сделать?

Ответы [ 6 ]

4 голосов
/ 22 декабря 2011
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]);
    }
}

Использование: На событие нажатия вашего перехода от 1 до 2 кнопки:

MoveListBoxItems(listBox1, listBox2);

Чтобы переместить их назад:

MoveListBoxItems(listBox2, listBox1);
2 голосов
/ 16 октября 2012

По этому вопросу Как удалить несколько выделенных элементов в 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);
    } 
} 

Вы можете сделать это так.

2 голосов
/ 22 декабря 2011
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);
2 голосов
/ 22 декабря 2011

A ListBox имеет свойство SelectedItems, которое можно использовать для копирования элементов в обработчике события нажатия кнопки.Как это:

foreach(var item in listBox1.SelectedItems)
{
    listBox2.Items.Add(item);
}
1 голос
/ 05 февраля 2016
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 голосов
/ 13 декабря 2016
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(); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...