Gerald McAuley Ответов: 1

Почему этот цикл работает только с индексом 0?


while (i < lbxcityTours.Items.Count)
                {
                    lbxcityTours.SelectedIndex = i;
                    if (lbxcityTours.SelectedItem.ToString() == t1)
                    {
                        work.Text = lbxcityTours.SelectedIndex.ToString();
                        lbxcityTours.SelectedItem.Value = "0";
                        //remove the selected item from the listbox
                        lstBoxAddedTours.Items.Remove(lstBoxAddedTours.SelectedItem);
                    }
                    i += 1;
                }


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

Мое намерение состоит в том, чтобы изменить содержание lbxcityTours.SelectedIndex i, если он соответствует строке t1
есть идеи?

1 Ответов

Рейтинг:
6

CHill60

Как странно! Для удобства всех, кто читает это, с точкой останова на линии

if (lbxcityTours.SelectedItem.ToString() == t1)
рассматривая значение lbxcityTours.SelectedIndex дает 0 для всех значений i

Я понятия не имею, почему это происходит, но мне удалось остановить его от неправильного поведения, убедившись, что ничего не было выбрано вообще, прежде чем назначить SelectedIndex - т. е.
lbxcityTours.SelectedIndex = -1; //Force the change to SelectedIndex
lbxcityTours.SelectedIndex = i;
Возможно, это говорит о том, что Microsoft не приводит пример установки этого значения в документации, а только получает его.