在Windows窗体应用程序中加载窗体期间触发的SelectedValueChange()事件

时间:2011-07-11 01:03:49

标签: c# .net winforms events

我遇到的问题是,在加载我的Windows窗体应用程序期间,在ComboBox上的SelectedValueChanged()事件被触发。目前,我还有一个Form_Load()事件正在加载几个ComboBox,包括这个,使用OleDbDataAdapters / DataTables / Fill()等。

我假设因为我的Form_Load()方法,由于正在填充ComboBox的数据而触发了SelectedValueChanged事件。

为什么会这样?

3 个答案:

答案 0 :(得分:5)

在将项目加载到comboBox之前的表单Load事件中,取消订阅该事件。绑定数据后再次订阅该事件。

Form_Load(..)
{
     _comboBoxName.SelectedValueChanged -= _comboBoxName_SelectedValueChanged;

    // Load data to the combo box... 

    _comboBoxName.SelectedValueChanged += _comboBoxName_SelectedValueChanged;
}

答案 1 :(得分:3)

由于首先在ComboBox中填充的数据,可能会触发此事件。建议的最佳修复方法是在初始化控件后订阅事件。

另一个简单的解决方法是在Form完全加载时分配一个布尔标志。在加载表单之前,此标记可用于忽略对您的事件的任何调用(例如FormLoaded = true)。

答案 2 :(得分:0)

rbtalldivision_CheckedChanged(sender, e);
rbtAllSitecodes_CheckedChanged(sender, e);

对于在Windows应用程序中调用多个事件应该可以正常工作