![](/img/trans.png)
[英]SelectedIndexChanged event of dropDownList not firing c#
[英]C#: bizzare multiple event firing for listview on SelectedIndexChanged
如果我將listview組件放入Windows窗體中,並將波紋管代碼添加到它的SelectedIndexChanged
事件中:
MessageBox.Show("Fired!");
foreach (int selectedIndex in listView1.SelectedIndices)
{
listView1.Items[selectedIndex].Selected = false;
listView1.Items[selectedIndex].Focused = false;
}
該消息框將顯示4次! 這是為什么?
注意 :我使用循環清除列表視圖中的選定項目
您不應在SelectedIndexChanged
事件中更改選擇。 更一般而言, 您不應在屬性已更改的通知內更改屬性 。
如果您需要更改屬性以響應通知,請查看處理相應的*Changing
事件。 並非是某事已更改(在事實之后發生)的通知,而是某事即將發生更改(在事實之前發生)的通知。 在SelectedIndexChanging
事件中,您有幾個不同的選項可以更改事件的過程:
e.Cancel
屬性設置為true
,就像上面所說的那樣。 它將取消事件並防止所選索引更改。 e.NewSelectedIndex
屬性更改選擇。 只需將此屬性設置為要選擇的項目的索引即可。 而且,如果您想響應其他事件( 例如 ,單擊不屬於ListView的“清除選擇”按鈕或類似的上下文菜單項)而清除ListView中的選定項目,則不要完全需要一個循環。 只需清除控件的SelectedItems
集合: myListView.SelectedItems.Clear()
。 同樣,您不能這樣做以響應SelectedIndexChanged
事件,否則您將遇到觸發大量通知的相同問題。
坦白地說,您在此處編寫的代碼沒有任何意義。 當用戶嘗試選擇一個項目時,為什么要清除所有選中的項目? 如果不想允許選擇,請通過將控件的Enabled
屬性設置為false
來禁用該控件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.