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

#c# #winforms

#c# #winforms

Вопрос:

У меня есть список, который позволяет вам выбирать разные меню. Допустим, мой список содержит 3 индекса. 1, 2 и 3. Индекс 3 является особенным и выполняет действия, которые влияют на 1 и 2. Я хочу выполнить определенное действие, если выбранный индекс изменится с 3 на любой другой индекс.

В основном я хочу следующее.

 if (selectedindex was = 3)
{
//Do stuff
}
  

Редактировать: я хотел немного уточнить. Мой список содержит 3 вещи, которые вы можете выбрать, см. Ниже. Имейте в виду, что цифры используются для моего примера.

введите описание изображения здесь

Итак, если я нажму на 3, затем нажмите на 1 или 2, я хочу, чтобы это делало очень конкретную вещь.

Комментарии:

1. Сохранить ранее выбранный индекс в переменной и сравнить?

2. Содержит 3 индекса означает, что у вас есть 3 элемента или что у вас есть 3 элемента, которые содержат значения от 1 до 3? Если у вас есть 3 элемента, индексы находятся в диапазоне 0-2 .

3. @Jimi Я внес правку, чтобы уточнить, что я пытался передать. Извините, я должен был сделать это при публикации.

4. Вы должны точно указать, что содержат элементы списка. У меня есть список, который позволяет выбирать разные меню : Меню? Важно, чтобы тип данных, хранящихся в элементах управления, был действительно четким. Также очень важно указать (возможно, в коде), что является источником данных элемента управления. Или, если элемент управления заполнен, добавление элементов вручную. Вся эта процедура должна быть в вопросе. От этого зависит любой возможный ответ, а также четкое определение ожидаемого результата. То есть, что такое очень специфическая вещь . Это станет довольно ясно, когда будут определены тип данных и источник данных.

Ответ №1:

Создайте переменную класса для хранения ранее выбранного значения для списка. Когда форма будет создана, установите выбранный элемент для списка и инициализируйте ранее выбранное значение. Добавьте измененный обработчик событий в список и используйте его для сохранения ранее выбранного значения. Используйте ранее выбранное значение, чтобы реагировать соответствующим образом для вашей проблемы — в этом случае всякий раз, когда пользователь переходит с «3».

Ответ №2:

Предполагая, что это событие ListBox_SelectionChanged, вы можете сделать это таким образом.

 private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    foreach(var item in e.RemovedItems)
    {
        if (item.ToString() == 3)
        {
            //do things
        }
    }
}
  

Комментарии:

1. Этот вопрос помечен WinForms, а не WPF. У меня также есть некоторые сомнения по поводу этого сравнения: item.ToString() == 3