Sonhospa Ответов: 1

Как таким образом подавить событие indexchanged при заполнении списка?


Привет,

В своем коде я использую событие SelectedIndexChanged для списков. Я должен был выяснить, что это событие, кажется, автоматически возникает, когда список заполняется его элементами.

Во-первых, после заполнения списка я хочу, чтобы ни один элемент не был выбран. В настоящее время я делаю это с помощью "ctrl.SelectedItem = Nothing", но почему-то у меня такое чувство, что это не очень элегантно. Может быть, у вас есть лучшая идея или хорошая практика, которой я могу научиться на этом.

Главная проблема моего вопроса заключается в следующем: Есть ли способ подавить событие SelectedIndexChanged, пока список не был заполнен? Что бы это могло быть?

Спасибо за любые намеки.

с уважением
Майкл

Что я уже пробовал:

Private Sub lstServers_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles lstServers.SelectedIndexChanged
      Dim ctrl As ListBox = DirectCast(sender, ListBox)

      ' SelectedItem was set to Nothing beforehand
      If ctrl.SelectedItem IsNot Nothing then
      ... do something ...
      End If
End Sub

1 Ответов

Рейтинг:
4

OriginalGriff

Вы можете удалить событие из списка обработчиков и добавить его обратно в конце: Динамическое добавление и удаление обработчиков событий в VB.NET[^] Это эффективно "отключает" его, пока он заполняется.


Sonhospa

Похоже, это именно то, что мне нужно, спасибо большое! Это означает, что я создам экземпляр listBox без оператора "WithEvents" и добавлю обработчик позже, верно?

OriginalGriff

Это было бы намного яснее в окончательном Коде, да.