2011-11-24 65 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

相关问题