2016-09-06 81 views
0

我有一個列表視圖與兩個組。我希望這樣,當我檢查一個項目時,它會移動到第二組,當我取消選中它時,它會移回第一組。在列表視圖C中移動選中的項目組#

這是到目前爲止,我已經試過代碼:

private void lstServices_ItemChecked(Object sender, ItemCheckedEventArgs e) 
{ 
    foreach (ListViewItem item in lstServices.Items) 
    { 
    if (item.Checked) 
    { 
     item.Group = lstServices.Groups[1]; 
    } 
    else 
    { 
     item.Group = lstServices.Groups[0]; 
    } 
    } 
} 

首先我覺得馬車。當我剔出某些東西時,它傾向於轉移到第二組,但是當我將它解開時,有時它會回到第一組,有時候他們根本不會解決問題,我無法解決原因。

其次,我認爲這是一個混亂的方式來做到這一點,每次檢查的東西我檢查整個列表,然後相應地移動。我假設有一種方法可以解決剛剛檢查過的項目,但我無法解決問題!

+2

第一個快速的東西..你是循環所有的項目?使用e.Item並僅更改激發事件的listitem的組。 – Pikoh

+0

這就是我想要擺脫的,它的循環方面,但我不知道如何。當你說使用e.item,你的意思是改變它是這樣的: private void lstServices_ItemChecked(Object sender,ItemCheckedEventArgs ** e.item **)? 這給出了一個錯誤。我完全不符合標準嗎? – Coozbiscuit

+0

不要更改事件處理程序方法,只需添加:'ListViewItem item = e.Item; if(item.Checked)...' – Pikoh

回答

1

爲了擺脫循環的,你必須做這樣的事情:

private void lstServices_ItemChecked(Object sender, ItemCheckedEventArgs e) 
{ 
    ListViewItem item=e.Item; 
    if (item.Checked) 
    { 
     item.Group = lstServices.Groups[1]; 
    } 
    else 
    { 
     item.Group = lstServices.Groups[0]; 
    } 
} 

ItemCheckedEventArgs變量e有一個屬性,返回引發該事件的ListViewItem。

+0

有沒有e.Item就是認爲 –

+0

哦對不起。查找ItemCheck事件...是的,ItemChekeEventArgs確實有Item屬性 –

+0

是@ UthistranS。,ItemChecked返回ItemCheckedEventArgs中的項目:) – Pikoh

相關問題