当窗体加载时停止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那么处理事件,否则忽略它。

确保在分配ValueMemberDatamember属性后,在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 } }