基本上,我有一個ListView的項目。選擇一個時,右側會顯示一個文本框以顯示該項目的更多詳細信息(需要一點時間才能抓取項目數據)。我想要的行爲是當所有項目被取消選中時,將此文本框隱藏在右側。捕獲在ListView中取消所有選擇 - SelectedIndexChanged兩次觸發
private void listView1_SelectedIndexChanged(object sender, EventArgs e) {
// should only be 1 item selected, it's not a multi-select listview
ListView.SelectedListViewItemCollection collection = this.listView1.SelectedItems;
if (collection.Count == 0) {
this.label2.Visible = false;
}
foreach (ListViewItem item in collection) {
this.label2.Visible = true;
getSideInformation(item.Text);
}
}
當我簡單地選擇另一個項目時,我注意到了閃爍的框。
private void listView1_SelectedIndexChanged(object sender, EventArgs e) {
// should only be 1 item selected, it's not a multi-select listview
ListView.SelectedListViewItemCollection collection = this.listView1.SelectedItems;
if (collection.Count == 0) {
this.label2.Text = "Unselected all!"
}
foreach (ListViewItem item in collection) {
getSideInformation(item.Text);
}
}
基本上,我不再隱藏框,但只是改變了文本,如果它與選擇0項的選擇更改事件:我改變我的代碼做一些挖掘。我發現這個事件實際上觸發了一個簡單的TWICE選擇另一個項目(一次有0個項目,第二個選擇了新項目)。所以我的盒子總是會顯示「Unselected all!」而如果我之前選擇了一件商品並正在更換另一件商品,則它將加載任何附加信息。
有沒有什麼辦法可以區分未選擇的所有項目的實際事件觸發與選擇另一個項目事件的初始觸發0項目?
非常感謝。這是我正在尋找的。 – kharles 2011-04-21 08:59:21
也永遠不要低估在項目上工作的前一個人添加了額外的事件處理程序。 < - 我的問題。 – Brent 2014-05-26 19:18:17
我試過這個,ItemSelectionChanged事件也會觸發兩次。 e.IsSelect變爲false,然後變爲true,導致閃爍發生。 – myQwil 2017-02-03 21:35:59