为了使其尽可能简单:ComboBox1 绑定到一个空列表(在 Form1 加载事件处理程序中),并且有一个与 ComboBox1 关联的事件处理程序:
private void CB1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("Event fired");
}
private void Form1_Load(object sender, EventArgs e)
{
CB1.DataSource = list1;
CB1.ValueMember = "Name";
CB1.DisplayMember = "Name";
}
表单加载完毕,CB1.SelectedIndex = -1, CB1.Text = "", CB1.Items.Count = 0
当我单击 Button1 时,会填充 list1。现在情况如下:CB1.SelectedIndex = 0, CB1.Text = "Some Text", CB1.Items.Count =196
但是,事件没有触发,尽管 SelectedIndex 从 -1 变为 0,并且我没有得到 MessageBox.Show(“事件触发”)。但是,当用户从列表中选择某个项目时,会触发该事件。此外,还有另一个按钮可以清除 list1,从而清除 CB1.Items。按下此按钮时,事件也会触发(SelectedIndex 从 X 变为 -1)。
我尝试使用其他事件,例如 SelectedValueChanged、TextChanged、SelectionChangeCommitted,但没有成功。
虽然这个问题有一个简单的暴力解决方法,但我仍然不明白为什么会出现这个问题,因此无法预料类似的情况。这就是为什么如果有人向我解释为什么在我描述的情况下没有事件发生,我将不胜感激。