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可以通過(guò)編程的方式更改屬性而觸發(fā)事件,但SelectionChangeCommitted事件必須由用戶(hù)操作選定選項(xiàng)才能觸發(fā)。
- 在初始化時(shí)(設(shè)置源)SelectedIndexChanged和SelectedValueChanged都會(huì)被調(diào)用,而SelectionChangeCommitted沒(méi)有這個(gè)問(wèn)題。
- SelectionChangeCommitted也有一個(gè)小問(wèn)題,當(dāng)打開(kāi)下拉菜單,用鍵盤(pán)的上下光標(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è)人感覺(jué))。
關(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ā)兩種事件)
說(shuō)明:當(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用foreach語(yǔ)句遍歷二維數(shù)組的方法
這篇文章主要介紹了C#使用foreach語(yǔ)句遍歷二維數(shù)組的方法,實(shí)例分析了C#遍歷數(shù)組的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
C# 啟動(dòng) SQL Server 服務(wù)的實(shí)例
下面小編就為大家分享一篇C# 啟動(dòng) SQL Server 服務(wù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
詳解如何實(shí)現(xiàn)C#和Python間實(shí)時(shí)視頻數(shù)據(jù)交互
我們?cè)谧鯮TSP|RTMP播放的時(shí)候,遇到好多開(kāi)發(fā)者,他們的視覺(jué)算法大多運(yùn)行在python下,需要高效率的實(shí)現(xiàn)C#和Python的視頻數(shù)據(jù)交互,本文給大家總結(jié)了一些常用的方法,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-10-10
c# 類(lèi)成員的可訪(fǎng)問(wèn)性代碼詳解
在本篇文章里小編給大家整理了關(guān)于c# 類(lèi)成員的可訪(fǎng)問(wèn)性代碼詳解內(nèi)容,有需要的朋友們可以參考下。2019-09-09
C#中Decimal類(lèi)型截取保留N位小數(shù)并且不進(jìn)行四舍五入操作
這篇文章主要介紹了C#中Decimal類(lèi)型截取保留N位小數(shù)并且不進(jìn)行四舍五入操作,本文給出需求說(shuō)明和實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-06-06
Unity實(shí)現(xiàn)透視滑動(dòng)列表
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)透視滑動(dòng)列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07

