2011-11-24 41 views
2

不Winform的ListView控件具有這樣的事件,時,將觸發「所有選定的項目變爲取消」?所以,當我在列表中的某些選定的項目,所有更改取消(所以,現在我沒有任何選擇的項目),我應該捕獲的事件。恐怕沒有內置的事件(?)或...?「所選項目變爲取消」事件在winform列表視圖

+0

它沒有。正如它沒有選中所有奇數行時觸發的事件一樣。正如回答問題ItemSelectionChanged的人所提到的,這是執行此任務的最簡單方法。你對簡單的「if」陳述有什麼反應? –

回答

-1
this.listView1.ItemSelectionChanged += this.HandleOnListViewItemSelectionChanged; 

    private void HandleOnListViewItemSelectionChanged(Object sender, ListViewItemSelectionChangedEventArgs e) 
    { 
     if (e.IsSelected) 
     { 
      //do your selected work 
     } 
     else 
     { 
      //do your unselected work 
      this.listView1.ItemSelectionChanged-= new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.listView1_ItemSelectionChanged); 
     } 
    } 
+0

謝謝。它不會觸發例如當通過單擊表單上的另一個列表和類似情況來取消選擇項目時。 – Tom

+0

我不認爲你應該使用e.IsSelected因爲如果你有選擇的三個項目,並取消他們一下子,事件被觸發三次.. – Abbas

+0

@Abbas:感謝您指出的problm,我做了一些的調整,我猜它仍然不會工作 – FosterZ

0

你可以使用的SelectedIndexChanged和事件檢查,如果所有項目被取消選擇即..

bool allDeselected = true; 

    foreach (ListViewItem item in myListView.Items) 
    { 
     if (item.Selected) 
     { 
      allDeselected = false; 
      break 
     } 
    } 
+0

對我並沒有很好的解決方案:它始終閃光時,你只是選擇另一個列表項,不僅在單純的所有項目成爲取消。 – Tom

1

在ItemSelectionChanged,檢查是否有項目在ListView檢查:

listView1.ItemSelectionChanged += listView1_ItemSelectionChanged; 

void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) 
{ 
    if (listView1.SelectedItems.Count == 0) 
     //Do something 
} 
+0

不是給我一個很好的解決方案:它始終閃光時,你只是選擇另一個列表項,不僅在單純的所有項目成爲取消。 – Tom

+0

這就是爲什麼if語句是有...否則寫信ListView的衍生與當所有的項目都取消選取的事件自己的控制。但我想我給出的解決方案仍然是最簡單的! – Abbas

相關問題