Перемещение элементов между двумя 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 tt >. Цикл продолжается до тех пор, пока все выбранные элементы не будут удалены из первого 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; в зависимости от того, пусты ли соответствующие списки.
