在列表视图C#中移动已检查项的组

时间:2016-09-06 10:55:27

标签: c# listview

我有一个包含两个组的列表视图。我想要它,以便当我检查一个项目时它移动到第二组,当我取消选中它时,它会移回到第一组。

这是我到目前为止尝试过的代码:

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];
     }
   }
}

首先我发现它有问题。当我勾选某些东西时,它确实会移动到第二组,但是当我取消它时,它会回到第一组,有时它们根本不会解开,我无法理解为什么。

其次我认为这是一种混乱的方式,每次检查一下我检查整个列表然后相应地移动。我假设有一种方法可以解决我刚检查过的项目,但我无法解决这个问题!

1 个答案:

答案 0 :(得分: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。