У меня есть форма с ComboBox
, которая предоставляет выпадающий список. В comboBox SelectedIndexChanged event
я запускаю некоторый код, но я не хочу, чтобы этот код запускался при загрузке формы. К сожалению, когда я загружаю форму (до того, как я сделаю выделение в поле со списком), SelectedIndexChanged
огней combobox (я думаю, когда поле со списком databinding
). Есть ли способ избежать такого поведения?
Stop comboBox selectedIndexChanged событие от срабатывания при загрузке формы
Ответ 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
}
}