当窗体加载时停止comboBox的selectedIndexChanged事件
我有一个提供下拉列表的ComboBox
表单。 在combobox的SelectedIndexChanged event
,运行一些代码,但我不希望代码运行时加载窗体。 不幸的是,当我加载表单(在我selectcombobox之前),combobox的SelectedIndexChanged
触发(我认为当combobox是databinding
)。 有没有办法避免这种行为?
如果您只想在用户更改combobox中的选定项目时作出反应,则最好订阅SelectionChangeCommitted 。
您可以简单地取消绑定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);
为什么不有一个boolean
标志,指示您的Form
何时完成加载?
在你的SelectionChanged
事件中,检查boolean
标志是否为true
。 如果这是true
那么处理事件,否则忽略它。
确保在分配ValueMember
和Datamember
属性后,在onload()
函数中设置DataSource
属性。
这将帮助你解决你的问题!
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
它以下面的代码的方式为我工作:
private void ddlChapter_SelectionChangeCommitted(object sender, EventArgs e) { if (ddlChapter.SelectedValue != null) { // Do something here } }