网上看到的一部分,然后自己测试,更新了其他的情况
SelectionChangeCommitted事件
在设定datasource和displaymember和valuemember时,以及手动改变combobox索引和值时都不触发该事件, 只是在界面选择combobox不同值时触发
SelectedIndexChanged事件 索引改变时触发
SelectedValueChanged事件 值改变时触发
一、在数据源有数据,且写Form_Load事件中的情况下
顺序一:
this.comboBox1.DisplayMember = "userName"; (不触发)
this.comboBox1.ValueMember = "userAge"; (只触发SelectedValueChanged)
this.comboBox1.DataSource = dt; (都触发)
SelectedValueChanged触发两次(总是先触发)SelectedIndexChanged,触发一次
顺序二:
this.comboBox1.ValueMember = "userAge";
this.comboBox1.DisplayMember = "userName";
this.comboBox1.DataSource = dt;
同上
顺序三:
this.comboBox1.DataSource = dt; (都触发)
this.comboBox1.DisplayMember = "userName";(都触发)
this.comboBox1.ValueMember = "userAge";(只触发SelectedValueChanged事件)
SelectedValueChanged触发三次(总是先触发)SelectedIndexChanged,触发两次
顺序四:
this.comboBox1.DataSource = dt; (都触发)
this.comboBox1.ValueMember = "userAge";(都触发) 其中SelectedValueChanged触发两次
this.comboBox1.DisplayMember = "userName";(都触发)
SelectedValueChanged触发四次(总是先触发)SelectedIndexChanged,触发三次
二、在数据源有数据,且写窗口初始化事件中的情况下
无论在什么样的排序下
this.comboBox1.DataSource = dt; (都触发)
this.comboBox1.ValueMember = "userAge";(只触发SelectedValueChanged事件)
this.comboBox1.DisplayMember = "userName";(不触发)
SelectedValueChanged触发两次(总是先触发)SelectedIndexChanged,触发一次
三、在数据源无数据的情况下,无论写在Form_Load还是窗口初始化的界面中
顺序一:
this.comboBox1.DisplayMember = "userName"; (不触发)
this.comboBox1.ValueMember = "userAge"; (只触发SelectedValueChanged)
this.comboBox1.DataSource = dt; (不触发)
SelectedValueChanged触发一次(总是先触发)SelectedIndexChanged,触发零次
顺序二:
this.comboBox1.ValueMember = "userAge";
this.comboBox1.DisplayMember = "userName";
this.comboBox1.DataSource = dt;
同上
顺序三:
this.comboBox1.DataSource = dt; (不触发)
this.comboBox1.DisplayMember = "userName";(只触发SelectedValueChanged)
this.comboBox1.ValueMember = "userAge";(只触发SelectedValueChanged事件)
SelectedValueChanged触发两次(总是先触发)SelectedIndexChanged,触发零次
顺序四:
this.comboBox1.DataSource = dt; (不触发)
this.comboBox1.ValueMember = "userAge";(SelectedValueChanged触发两次) this.comboBox1.DisplayMember = "userName";(不触发)
SelectedValueChanged触发两次(总是先触发)SelectedIndexChanged,触发零次
四、comboBox2的绑定写在comboBox1的SelectedIndexChanged事件中
根据comboBox1绑定存放的位置comboBox2绑定的次数也不一样
如comboBox1绑定的位置为Form_Load中,则comboBox2绑定时的触发事件次数和comboBox1一样
浙公网安备 33010602011771号