我有一个包含两个组的列表视图。我想要它,以便当我检查一个项目时它移动到第二组,当我取消选中它时,它会移回到第一组。
这是我到目前为止尝试过的代码:
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];
}
}
}
首先我发现它有问题。当我勾选某些东西时,它确实会移动到第二组,但是当我取消它时,它会回到第一组,有时它们根本不会解开,我无法理解为什么。
其次我认为这是一种混乱的方式,每次检查一下我检查整个列表然后相应地移动。我假设有一种方法可以解决我刚检查过的项目,但我无法解决这个问题!
答案 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。