Событие SelectedIndexChanged
запускается в моем приложении из поля со списком, когда:
- пользователь выбирает другой элемент в поле со списком или когда:
- мой собственный код обновляет
SelectedItem
поля со списком, чтобы отразить, что поле со списком теперь отображает свойства для другого объекта.
Меня интересует событие SelectedIndexChanged
для случая 1, чтобы я мог обновить свойства текущего объекта. Но в случае 2 я не хочу, чтобы событие запускалось, потому что свойства объекта не изменились.
Пример может помочь. Предположим, у меня есть поле со списком, содержащее список людей, и поле со списком, представляющее национальность человека, выбранного в данный момент в списке. Случай 1 может произойти, если в данный момент в списке выбран Фред, и я использую поле со списком, чтобы изменить его национальность с английского на валлийский. Случай 2 может произойти, если я затем выберу Боба, который является шотландцем, в списке. Здесь мой код обработчика событий обновления списка видит, что теперь выбран Боб, и обновляет поле со списком, так что шотландский язык теперь является выбранным элементом. Это приводит к срабатыванию события SelectedIndexChanged
поля со списком, чтобы установить шотландское гражданство Боба, хотя оно уже шотландское.
Как мне обновить свойство поля со списком SelectedItem
, не вызывая срабатывания события SelectedIndexChanged
? Один из способов - отменить регистрацию обработчика событий, установить SelectedItem
, а затем повторно зарегистрировать обработчик событий, но это кажется утомительным и подвержены ошибкам. Должен быть способ получше.