Bakhshi-faisal Ответов: 2

Как переместить значения из одного списка в другой список


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

Что я уже пробовал:

listBox2.Items.Добавить (listBox1. SelectedItem);
список listbox1.Предметы.Удалить (listBox1. SelectedItem);
это мне надоело, но я выбираю предметы, но хочу, не выбирая, перенести их

2 Ответов

Рейтинг:
6

Wendelius

Это в основном то же самое, но вы просто определяете индекс элемента, который хотите изменить.

Рассмотрим следующий пример

ListBox lb1 = new ListBox();
ListBox lb2 = new ListBox();

lb1.Items.Add("first");
lb1.Items.Add("second");
lb1.Items.Add("third");

// move the second item
lb2.Items.Add(lb1.Items[1]);
lb1.Items.RemoveAt(1);

[ДОБАВЛЕН]

Пример перемещения нескольких элементов
// move two items items 2 and 0
// remember that when using indexes loop from biggest to smallest
foreach (int index in new int[] { 2, 0 }) {
   lb2.Items.Add(lb1.Items[index]);
   lb1.Items.RemoveAt(index);
}

[ДОБАВЛЕН]
Поскольку вы используете список множественного выбора в качестве источника, вы можете циклически перебирать выбранные элементы. Например
ListBox lb1 = new ListBox();
ListBox lb2 = new ListBox();

lb1.Items.Add("first");
lb1.Items.Add("second");
lb1.Items.Add("third");

// select items 0 and 2
lb1.SelectionMode = SelectionMode.MultiSimple;
lb1.SelectedItems.Add(lb1.Items[0]);
lb1.SelectedItems.Add(lb1.Items[2]);

// move the selected items
for (int counter = lb1.SelectedItems.Count - 1; counter >= 0; counter-- ) {
   lb2.Items.Add(lb1.SelectedItems[counter]);
   lb1.Items.Remove(lb1.SelectedItems[counter]);
}


Bakhshi-faisal

Это не работает

Wendelius

А почему бы и нет? Конечно, вам нужно использовать свои реальные списки вместо lb1 и lb2. Они были созданы только для демонстрационных целей.

Если вы запустите приведенный выше код и в отладчике изучите элементы в lb1 и lb2, то увидите, что после запуска кода lb1 содержит 2 элемента, а lb2-1 элемент.

Bakhshi-faisal

Большое спасибо!
это работает но для передачи нескольких значений без их выбора что мы должны добавить в код

Wendelius

Как вы можете видеть в примере кода, я ничего не выбирал из списка и не использовал SelectedItem.

Поэтому, чтобы ответить на этот вопрос, вам нужно принять решение, какие индексы элементов вы перемещаете, а затем использовать приведенный выше код перемещения в цикле, где вы заменяете 1 счетчиком для цикла

Wendelius

Добавлен новый пример

Bakhshi-faisal

я получил его Спасибо

Wendelius

Всегда пожалуйста :)

Bakhshi-faisal

извиняюсь
но все равно не получается
я не знаю, что это для передачи одного значения

if (listBox1. SelectedIndex == -1)
{
Ящик для сообщений.Шоу ("Veuillez sélectionner un choix");
}
ещё
{
listBox2.Items.Добавить (listBox1. SelectedItem);
список listbox1.Предметы.Удалить (listBox1. SelectedItem);
но для нескольких
if (listBox1. SelectedIndex == -1)
{
Ящик для сообщений.Шоу ("Veuillez sélectionner un choix");
}
в то время как(список listbox1.Свойство selecteditems.Считай !=0)
{
listBox2.Items.Добавить (listBox1. SelectedItems[0]);
список listbox1.Предметы.Удалить (listBox1. SelectedItems[0]);
}
я пробовал это, но я должен выбрать элементы есть ли какое-либо решение без выбора, передать их

Wendelius

См. обновленный ответ

Bakhshi-faisal

спасибо он отлично работает

Bakhshi-faisal

я могу отобразить один элемент, когда выберу его
но я не могу отобразить все элементы сразу

Что я уже пробовал:

я попробовал это
форма 1
частная btn_voit_Click недействительным(объект отправителя, EventArgs в электронной)
{
строка textboxchoix = listBox2. Text;
Form2 frm = new Form2(textboxchoix);
ФРМ.Показать();
}
формы Form2
public Form2(string textboxchoix)
{
метод InitializeComponent();
label_choix.Текст = textboxchoix;

Bakhshi-faisal

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

Wendelius

Я вижу, вы уже открыли для этого новый вопрос. Это хорошо

Bakhshi-faisal

хорошо вы можете помочь мне разобраться в этом

Рейтинг:
12

OriginalGriff

Свойство SelectedItem просто возвращает текущий выбранный элемент - но вы уже используете нужное вам свойство: ListBox.Предметы
Все, что вам нужно сделать, это решить, какой элемент(ы) вы хотите, и получить к ним доступ непосредственно через свойство Items:

listBox2.Items.Add(listBox1.Items[indexOfItemIWant]);
listBox1.Items.Remove(listBox1.Items[indexOfItemIWant]);