Рейтинг:
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]);