我遇到的问题是,在加载我的Windows窗体应用程序期间,在ComboBox上的SelectedValueChanged()事件被触发。目前,我还有一个Form_Load()事件正在加载几个ComboBox,包括这个,使用OleDbDataAdapters / DataTables / Fill()等。
我假设因为我的Form_Load()方法,由于正在填充ComboBox的数据而触发了SelectedValueChanged事件。
为什么会这样?
答案 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应用程序中调用多个事件应该可以正常工作