Остановить событие selectedIndexChanged comboBox от запуска при загрузке формы - PullRequest
70 голосов
/ 16 июля 2010

У меня есть форма с ComboBox, которая предоставляет раскрывающийся список.На comboBox SelectedIndexChanged event я выполняю некоторый код, но я не хочу, чтобы этот код запускался при загрузке формы.К сожалению, когда я загружаю форму (перед тем, как сделать выбор в поле со списком), SelectedIndexChanged из списка вспыхивает (думаю, когда поле со списком databinding).Есть ли способ избежать такого поведения?

Ответы [ 6 ]

136 голосов
/ 16 июля 2010

Если вы хотите реагировать только тогда, когда пользователь меняет выбранный элемент в поле со списком, тогда лучше подписаться на SelectionChangeCommitted .

11 голосов
/ 16 июля 2010

Вы можете просто отсоединить событие SelectedIndexChanged, вызвать функцию fill и снова связать событие SelectedIndexChanged. К сожалению, это не работает с сеткой.

Например:

this.cmb.SelectionChanged -= new System.EventHandler(this.cmb_SelectionChanged);
cmb.fill(); //Your function
this.cmb.SelectionChanged += new System.EventHandler(this.cmb_SelectionChanged);
6 голосов
/ 13 декабря 2012

Обязательно установите свойство DataSource в функции onload() после назначения свойств ValueMember и Datamember.

Это поможет вам решить вашу проблему!

5 голосов
/ 16 июля 2010

Почему бы не иметь флаг boolean, который указывает, когда ваша Form закончила загрузку?

В вашем SelectionChanged событии проверьте, установлен ли флаг boolean true. Если это true, обработайте событие, иначе проигнорируйте его.

1 голос
/ 17 августа 2015

VB

RemoveHandler lbxNomes.SelectedIndexChanged, AddressOf lbxNomes_SelectedIndexChanged
lbxNomes.DataSource = dst
Label1.Text = String.Format("Encontrados {0} Sócios nesta pesquisa", dst.Rows.Count)
Label1.Visible = True
AddHandler lbxNomes.SelectedIndexChanged, AddressOf lbxNomes_SelectedIndexChanged
0 голосов
/ 04 августа 2016

Это сработало для меня следующим образом:

  private void ddlChapter_SelectionChangeCommitted(object sender, EventArgs e)
    {
        if (ddlChapter.SelectedValue != null)
        {
           // Do something here
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...