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

本文关键字:窗体 SelectedValueChange 事件 应用程序 Windows 加载 | 更新日期: 2023-09-27 18:01:47

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

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

为什么会发生这种情况?

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

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

Form_Load(..)
{
     _comboBoxName.SelectedValueChanged -= _comboBoxName_SelectedValueChanged;
    // Load data to the combo box... 
    _comboBoxName.SelectedValueChanged += _comboBoxName_SelectedValueChanged;
}

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

另一个简单的修复是在表单完全加载时分配一个布尔标志。这个标志可以用来忽略对事件的任何调用,直到窗体被加载(例如FormLoaded = true)。

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

在windows应用程序中调用多个事件应该工作