Мое приложение C# имеет a comboBox
с a SelectedIndexChanged
событие. Обычно, я хочу, чтобы это событие стреляло, но но иногда мне нужно событие для не увольнения. Мой comboBox
список файлов MRU. Если файл в списке, как находят, не существует, объект удален из comboBox
, и comboBox
SelectedIndex
обнуляется. Однако установка comboBox
SelectedIndex
обнулять причины SelectedIndexChanged
событие для увольнения, который в этом случае проблематичен, потому что оно заставляет некоторый код UIF быть выполненным в конечном счете обработчик. Существует ли корректный способ отключить/разрешить события для средств управления формой C#?Спасибо.
Запустите метод обработчика событий с помощью
ComboBox combo = sender as ComboBox;
if (combo.SelectedIndex == 0)
{
return;
}
. Если у вас проблема с другим обработчиком событий, вы можете сначала удалите регистрацию события обработчика событий.
combo.SelectedIndexChanged -= EventHandler<SelectedIndexChangedEventArgs> SomeEventHandler;
combo.SelectedIndex = 0;
combo.SelectedIndexChanged += EventHandler<SelectedIndexChangedEventArgs> SomeEventHandler;
Один (довольно уродливый) способ - установить флаг в коде который удаляет запись, а затем проверяет, что в обработчике SelectedIndexChanged
:
if (!deletedEntry)
{
// Do stuff
}
deletedEntry = false;
Лучше всего удалить обработчик событий SelectedIndexChanged
в начале метода удаления и восстановить его в конец. Таким образом, вы не будете знать, что индекс изменился.