Перемещение элементов между двумя ListBoxes в C#

Один из способов позволить пользователю выбрать элементы из списка - использовать ListBox или CheckedListBox. Пользователь может щелкнуть, Ctrl + Click, Shift + Click и другие комбинации клавиатуры и мыши для выбора некоторых элементов в списке.

Другим методом является использование кнопок, позволяющих перемещать элементы между двумя ListBox es. Один ListBox содержит элементы, которые не выбраны, а другие содержат те, которые есть.

Выберите элемент в любом списке, и программа включит соответствующие кнопки. Например, если вы выберите элемент в левом списке, программа включает & gt; чтобы переместить элемент в правый список. Используйте & lt; и & gt; & gt; & gt; & gt; кнопки для перемещения всех элементов из одного списка в другой.

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

// Переместить выбранные элементы из одного списка в другой.
private void MoveSelectedItems(ListBox lstFrom, ListBox lstTo)
{
    while (lstFrom.SelectedItems.Count > 0)
    {
        string item = (string)lstFrom.SelectedItems[0];
        lstTo.Items.Add(item);
        lstFrom.Items.Remove(item);
    }
    SetButtonsEditable();
}

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

Следующий код показывает, как программа использует этот метод для перемещения элементов, когда пользователь нажимает кнопку & lt; и & gt; кнопки.

// Переместить выбранные элементы в lstSelected.
private void btnSelect_Click(object sender, EventArgs e)
{
    MoveSelectedItems(lstUnselected, lstSelected);
}

// Перемещение выбранных элементов в lstUnselected.
private void btnDeselect_Click(object sender, EventArgs e)
{
    MoveSelectedItems(lstSelected, lstUnselected);
}

Ниже показан метод MoveAllItems, который перемещает все элементы из одного ListBox в другой.

// Перемещение всех элементов из одного ListBox в другое.
private void MoveAllItems(ListBox lstFrom, ListBox lstTo)
{
    lstTo.Items.AddRange(lstFrom.Items);
    lstFrom.Items.Clear();
    SetButtonsEditable();
}

Этот код использует метод AddBange ListBox для быстрого добавления всех элементов списка источников в список адресатов. Затем он очищает источник ListBox.

Следующий код показывает, как программа перемещает элементы, когда пользователь нажимает кнопку & lt; и & gt; & gt; & gt; & gt; кнопки.

// Переместить все элементы в lstSelected.
private void btnSelectAll_Click(object sender, EventArgs e)
{
    MoveAllItems(lstUnselected, lstSelected);
}

// Переместите все элементы в lstUnselected.
private void btnDeselectAll_Click(object sender, EventArgs e)
{
    MoveAllItems(lstSelected, lstUnselected);
}

Последним интересным фрагментом кода является следующий метод SetButtonsEditable.

// Включить и отключить кнопки.
private void SetButtonsEditable()
{
    btnSelect.Enabled = (lstUnselected.SelectedItems.Count > 0);
    btnSelectAll.Enabled = (lstUnselected.Items.Count > 0);
    btnDeselect.Enabled = (lstSelected.SelectedItems.Count > 0);
    btnDeselectAll.Enabled = (lstSelected.Items.Count > 0);
}

Этот метод включает или отключает & lt; и & gt; в зависимости от того, выбраны ли элементы в соответствующих списках. Он включает и отключает & lt; & gt; & gt; & gt; & gt; & gt; в зависимости от того, пусты ли соответствующие списки.

Источник: http://csharphelper.com/blog/2015/11/move-items-between-two-listboxes-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector