Переместить элементы из одного списка в другой - PullRequest
3 голосов
/ 29 октября 2009

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

private void MoveSelItems(ListBox from, ListBox to)
    {
        for (int i = 0; i < from.SelectedItems.Count; i++)
        {
            to.Items.Add(from.SelectedItems[i].ToString());
        }

        from.Items.Remove(to.SelectedItem);
    }

Я использую C # / Winforms / -NET 3.5

Ответы [ 4 ]

3 голосов
/ 29 октября 2009

Попробуйте этот код вместо этого в конце цикла

foreach ( var item in new ArrayList(from.SelectedItems) ) {
  from.Items.Remove(item);
}
2 голосов
/ 29 октября 2009
private void MoveSelItems(ListBox from, ListBox to)
{
    while (from.SelectedItems.Count > 0)
    {
        to.Items.Add(from.SelectedItem[0]);
        from.Items.Remove(from.SelectedItem[0]);
    }
}
1 голос
/ 21 мая 2011
              for (int i = 0; i < ListBox3.Items.Count; i++)
               {
                    ListBox4.Items.Add(ListBox3.Items[i].Text);
                    ListBox3.Items.Remove(ListBox3.SelectedItem);

                }
1 голос
/ 29 октября 2009
private void MoveSelItems(ListBox from, ListBox to)
    {
        for (int i = 0; i < from.SelectedItems.Count; i++)
        {
            to.Items.Add(from.SelectedItems[i].ToString());
            from.Items.Remove(from.SelectedItems[i]);
        }
    }

Хотя

Items.RemoveAt (i) возможно быстрее, если это важно.

Возможно, вам потребуется создать список хранения.

    //declare
    List<Object> items = new List<Object>();
    for (int i = 0; i < from.SelectedItems.Count; i++)
    {
        items.Add(from.SelectedItems[i]);
    }
    for (int i = 0; i < items.Count; i++)
    {
        to.Items.Add(items[i].ToString());
        from.Items.Remove(items[i]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...