2024年4月16日发(作者:)

SelectionChangeCommitted事件

在设定datasource和displaymember和valuemember时,以及手动改变

combobox索引和值时都不触发该事件, 只是在界面选择combobox不同值时触发。

SelectedIndexChanged事件 当 SelectedIndex 属性更改时发生,索引改变时触

发。

SelectedValueChanged事件 当 SelectedValue 属性更改时发生,值改变时触

发。

-------------------------------------------------------------------------------------

-------------------------------------

区别:

1、SelectedIndexChanged和SelectedValueChanged可以通过编程的方式更改

属性而触发事件,但SelectionChangeCommitted事件必须由用户操作选定选项才能触

发。

2、在初始化时(设置源)SelectedIndexChanged和SelectedValueChanged都

会被调用,而SelectionChangeCommitted没有这个问题。

3、SelectionChangeCommitted也有一个小问题,当打开下拉菜单,用键盘的上

下光标键选择条目后(不用鼠标点击),鼠标点击其他控件,使焦点转移,此时

comboBox的Text属性已改变,SelectedIndex属性也已改变,但这样的操作不会触发

SelectionChangeCommitted事件。结论:SelectionChangeCommitted一定要由鼠

标选择才能触发(个人感觉)。

-------------------------------------------------------------------------------------

-------------------------------------

关于事件的触发

设置DataSource, DisplayMember, ValueMember不同顺序触发

SelectedIndexChanged事件和SelectedValueChanged事件的次数

顺序一:

yMember = "userName"; (不触发)

ember = "userAge"; (只触发SelectedValueChanged)

urce = dt; (都触发)

SelectedValueChanged触发两次(总是先触发)SelectedIndexChanged,触发

一次 (设置DisplayMember属性时不触发两种事件)

顺序二:

ember = "userAge";