C# SelectedIndexChanged事件詳解
SelectionChangeCommitted事件
在設(shè)定datasource和displaymember和valuemember時,以及手動改變combobox索引和值時都不觸發(fā)該事件, 只是在界面選擇combobox不同值時觸發(fā)。
SelectedIndexChanged事件 當(dāng) SelectedIndex 屬性更改時發(fā)生,索引改變時觸發(fā)。
SelectedValueChanged事件 當(dāng) SelectedValue 屬性更改時發(fā)生,值改變時觸發(fā)。
區(qū)別:
- SelectedIndexChanged和SelectedValueChanged可以通過編程的方式更改屬性而觸發(fā)事件,但SelectionChangeCommitted事件必須由用戶操作選定選項(xiàng)才能觸發(fā)。
- 在初始化時(設(shè)置源)SelectedIndexChanged和SelectedValueChanged都會被調(diào)用,而SelectionChangeCommitted沒有這個問題。
- SelectionChangeCommitted也有一個小問題,當(dāng)打開下拉菜單,用鍵盤的上下光標(biāo)鍵選擇條目后(不用鼠標(biāo)點(diǎn)擊),鼠標(biāo)點(diǎn)擊其他控件,使焦點(diǎn)轉(zhuǎn)移,此時comboBox的Text屬性已改變,SelectedIndex屬性也已改變,但這樣的操作不會觸發(fā)SelectionChangeCommitted事件。結(jié)論:SelectionChangeCommitted一定要由鼠標(biāo)選擇才能觸發(fā)(個人感覺)。
關(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屬性時不觸發(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屬性時不觸發(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屬性時不觸發(fā)兩種事件)
說明:當(dāng)設(shè)置了DataSource 屬性后,SelectedValue 屬性值會默認(rèn)為第一行(所以會觸發(fā)SelectedIndexChanged事件和SelectedValueChanged事件),因此,如果不希望ComboBox自動選擇第一行,還需在設(shè)置完DataSource 后自行將SelectedValue 設(shè)為“”。
到此這篇關(guān)于C# SelectedIndexChanged事件詳解的文章就介紹到這了,更多相關(guān)C# SelectedIndexChanged事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# 啟動 SQL Server 服務(wù)的實(shí)例
下面小編就為大家分享一篇C# 啟動 SQL Server 服務(wù)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
詳解如何實(shí)現(xiàn)C#和Python間實(shí)時視頻數(shù)據(jù)交互
我們在做RTSP|RTMP播放的時候,遇到好多開發(fā)者,他們的視覺算法大多運(yùn)行在python下,需要高效率的實(shí)現(xiàn)C#和Python的視頻數(shù)據(jù)交互,本文給大家總結(jié)了一些常用的方法,感興趣的小伙伴跟著小編一起來看看吧2024-10-10
C#中Decimal類型截取保留N位小數(shù)并且不進(jìn)行四舍五入操作
這篇文章主要介紹了C#中Decimal類型截取保留N位小數(shù)并且不進(jìn)行四舍五入操作,本文給出需求說明和實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-06-06

