Stop comboBox selectedIndexChanged событие от срабатывания при загрузке формы

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

Ответ 1

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

Ответ 2

Вы можете просто отвязать событие 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);

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

Он работал у меня таким образом, что следующий код:

  private void ddlChapter_SelectionChangeCommitted(object sender, EventArgs e)
    {
        if (ddlChapter.SelectedValue != null)
        {
           // Do something here
        }
    }