#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