您好,登錄后才能下訂單哦!
這篇文章主要介紹了C#中SelectedIndexChanged事件有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
在設定datasource和displaymember和valuemember時,以及手動改變combobox索引和值時都不觸發該事件, 只是在界面選擇combobox不同值時觸發。
SelectedIndexChanged事件 當 SelectedIndex 屬性更改時發生,索引改變時觸發。
SelectedValueChanged事件 當 SelectedValue 屬性更改時發生,值改變時觸發。
SelectedIndexChanged和SelectedValueChanged可以通過編程的方式更改屬性而觸發事件,但SelectionChangeCommitted事件必須由用戶操作選定選項才能觸發。
在初始化時(設置源)SelectedIndexChanged和SelectedValueChanged都會被調用,而SelectionChangeCommitted沒有這個問題。
SelectionChangeCommitted也有一個小問題,當打開下拉菜單,用鍵盤的上下光標鍵選擇條目后(不用鼠標點擊),鼠標點擊其他控件,使焦點轉移,此時comboBox的Text屬性已改變,SelectedIndex屬性也已改變,但這樣的操作不會觸發SelectionChangeCommitted事件。結論:SelectionChangeCommitted一定要由鼠標選擇才能觸發(個人感覺)。
設置DataSource, DisplayMember, ValueMember不同順序觸發SelectedIndexChanged事件和SelectedValueChanged事件的次數
this.comboBox1.DisplayMember = "userName"; (不觸發)
this.comboBox1.ValueMember = "userAge"; (只觸發SelectedValueChanged)
this.comboBox1.DataSource = dt; (都觸發)
SelectedValueChanged觸發兩次(總是先觸發)SelectedIndexChanged,觸發一次 (設置DisplayMember屬性時不觸發兩種事件)
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,觸發兩次 (設置DisplayMember屬性時不觸發兩種事件)
this.comboBox1.DataSource = dt; (都觸發)
this.comboBox1.ValueMember = "userAge";(都觸發) 其中SelectedValueChanged觸發兩次
this.comboBox1.DisplayMember = "userName";(都觸發)
SelectedValueChanged觸發四次(總是先觸發)SelectedIndexChanged,觸發三次 (設置DisplayMember屬性時不觸發兩種事件)
說明:當設置了DataSource 屬性后,SelectedValue 屬性值會默認為第一行(所以會觸發SelectedIndexChanged事件和SelectedValueChanged事件),因此,如果不希望ComboBox自動選擇第一行,還需在設置完DataSource 后自行將SelectedValue 設為“”。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C#中SelectedIndexChanged事件有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。