Изменение ComboBox SelectedIndex без инициирующего события в C#

Мое приложение C# имеет a comboBox с a SelectedIndexChanged событие. Обычно, я хочу, чтобы это событие стреляло, но но иногда мне нужно событие для не увольнения. Мой comboBox список файлов MRU. Если файл в списке, как находят, не существует, объект удален из comboBox, и comboBox SelectedIndex обнуляется. Однако установка comboBox SelectedIndex обнулять причины SelectedIndexChanged событие для увольнения, который в этом случае проблематичен, потому что оно заставляет некоторый код UIF быть выполненным в конечном счете обработчик. Существует ли корректный способ отключить/разрешить события для средств управления формой C#?Спасибо.

8
задан Jim Fell 28 July 2010 в 19:12
поделиться

2 ответа

Запустите метод обработчика событий с помощью

ComboBox combo = sender as ComboBox;
if (combo.SelectedIndex == 0)
{
    return;
}

. Если у вас проблема с другим обработчиком событий, вы можете сначала удалите регистрацию события обработчика событий.

combo.SelectedIndexChanged -= EventHandler<SelectedIndexChangedEventArgs> SomeEventHandler;
combo.SelectedIndex = 0;
combo.SelectedIndexChanged += EventHandler<SelectedIndexChangedEventArgs> SomeEventHandler;
15
ответ дан 5 December 2019 в 05:55
поделиться

Один (довольно уродливый) способ - установить флаг в коде который удаляет запись, а затем проверяет, что в обработчике SelectedIndexChanged :

if (!deletedEntry)
{
    // Do stuff
}
deletedEntry = false;

Лучше всего удалить обработчик событий SelectedIndexChanged в начале метода удаления и восстановить его в конец. Таким образом, вы не будете знать, что индекс изменился.

1
ответ дан 5 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: