C# SelectedIndexChanged事件詳解
SelectionChangeCommitted事件
在設(shè)定datasource和displaymember和valuemember時(shí),以及手動(dòng)改變combobox索引和值時(shí)都不觸發(fā)該事件, 只是在界面選擇combobox不同值時(shí)觸發(fā)。
SelectedIndexChanged事件 當(dāng) SelectedIndex 屬性更改時(shí)發(fā)生,索引改變時(shí)觸發(fā)。
SelectedValueChanged事件 當(dāng) SelectedValue 屬性更改時(shí)發(fā)生,值改變時(shí)觸發(fā)。
區(qū)別:
- SelectedIndexChanged和SelectedValueChanged可以通過編程的方式更改屬性而觸發(fā)事件,但SelectionChangeCommitted事件必須由用戶操作選定選項(xiàng)才能觸發(fā)。
- 在初始化時(shí)(設(shè)置源)SelectedIndexChanged和SelectedValueChanged都會(huì)被調(diào)用,而SelectionChangeCommitted沒有這個(gè)問題。
- SelectionChangeCommitted也有一個(gè)小問題,當(dāng)打開下拉菜單,用鍵盤的上下光標(biāo)鍵選擇條目后(不用鼠標(biāo)點(diǎn)擊),鼠標(biāo)點(diǎn)擊其他控件,使焦點(diǎn)轉(zhuǎn)移,此時(shí)comboBox的Text屬性已改變,SelectedIndex屬性也已改變,但這樣的操作不會(huì)觸發(fā)SelectionChangeCommitted事件。結(jié)論:SelectionChangeCommitted一定要由鼠標(biāo)選擇才能觸發(fā)(個(gè)人感覺)。
關(guān)于事件的觸發(fā)
設(shè)置DataSource, DisplayMember, ValueMember不同順序觸發(fā)SelectedIndexChanged事件和SelectedValueChanged事件的次數(shù)
順序一:
this.comboBox1.DisplayMember = "userName"; (不觸發(fā))
this.comboBox1.ValueMember = "userAge"; (只觸發(fā)SelectedValueChanged)
this.comboBox1.DataSource = dt; (都觸發(fā))
SelectedValueChanged觸發(fā)兩次(總是先觸發(fā))SelectedIndexChanged,觸發(fā)一次 (設(shè)置DisplayMember屬性時(shí)不觸發(fā)兩種事件)
順序二:
this.comboBox1.ValueMember = "userAge";
this.comboBox1.DisplayMember = "userName";
this.comboBox1.DataSource = dt;
同上
順序三:
this.comboBox1.DataSource = dt; (都觸發(fā))
this.comboBox1.DisplayMember = "userName";(都觸發(fā))
this.comboBox1.ValueMember = "userAge";(只觸發(fā)SelectedValueChanged事件)
SelectedValueChanged觸發(fā)三次(總是先觸發(fā))SelectedIndexChanged,觸發(fā)兩次 (設(shè)置DisplayMember屬性時(shí)不觸發(fā)兩種事件)
順序四:
this.comboBox1.DataSource = dt; (都觸發(fā))
this.comboBox1.ValueMember = "userAge";(都觸發(fā)) 其中SelectedValueChanged觸發(fā)兩次
this.comboBox1.DisplayMember = "userName";(都觸發(fā))
SelectedValueChanged觸發(fā)四次(總是先觸發(fā))SelectedIndexChanged,觸發(fā)三次 (設(shè)置DisplayMember屬性時(shí)不觸發(fā)兩種事件)
說明:當(dāng)設(shè)置了DataSource 屬性后,SelectedValue 屬性值會(huì)默認(rèn)為第一行(所以會(huì)觸發(fā)SelectedIndexChanged事件和SelectedValueChanged事件),因此,如果不希望ComboBox自動(dòng)選擇第一行,還需在設(shè)置完DataSource 后自行將SelectedValue 設(shè)為“”。
到此這篇關(guān)于C# SelectedIndexChanged事件詳解的文章就介紹到這了,更多相關(guān)C# SelectedIndexChanged事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于動(dòng)態(tài)修改App.Config與web.Config的使用詳解
本篇文章是對動(dòng)態(tài)修改App.Config與web.Config的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#針對xml基本操作及保存配置文件應(yīng)用實(shí)例
這篇文章主要介紹了C#針對xml基本操作及保存配置文件應(yīng)用實(shí)例,包括了針對XML文件的定義、初始化、創(chuàng)建、以及增刪改查等基礎(chǔ)操作,并配有詳細(xì)的實(shí)例加以說明,需要的朋友可以參考下2014-10-10C#中的out參數(shù)、ref參數(shù)和params可變參數(shù)用法介紹
這篇文章介紹了C#中的out參數(shù)、ref參數(shù)和params可變參數(shù)用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01基于Unity Line Renderer組件的常用屬性說明
這篇文章主要介紹了基于Unity Line Renderer組件的常用屬性說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04Unity3D UI Text得分?jǐn)?shù)字增加的實(shí)例代碼
這篇文章主要介紹了Unity3D UI Text得分?jǐn)?shù)字增加方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04C#在Entity Framework中實(shí)現(xiàn)事務(wù)回滾
這篇文章介紹了C#在Entity Framework中實(shí)現(xiàn)事務(wù)回滾的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08C#中自定義高精度Timer定時(shí)器的實(shí)例教程
這篇文章主要介紹了C#中自定義高精度Timer定時(shí)器的實(shí)例教程,多線程的Timer編寫需要注意線程安全的問題,需要的朋友可以參考下2016-04-04c#中l(wèi)ist.FindAll與for循環(huán)的性能對比總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于c#中l(wèi)ist.FindAll與for循環(huán)的性能,文中通過詳細(xì)的示例代碼給大家介紹了這兩者之間的性能,對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10