递归取消ListViewItems检查
本文关键字:检查 ListViewItems 取消 递归 | 更新日期: 2023-09-27 18:07:42
我有一个ListView与级联复选框里面。我想做的是能够取消选中所有的子框,如果父框被选中(同样,我想检查所有的子框,如果父框被选中)。目前,如果我选中或取消选中一个框,父节点和子节点将显示为灰色,但子框上的复选标记仍然可见。
我假定我必须递归地做这个。我给了下面的代码一个尝试,我认为它应该工作,但它打破了运行时由于类型转换问题。
private void listViewChildNodeModifier(ListViewItem item)
{
if (item.SubItems.Equals(null)) return;
else
{
foreach (ListViewItem childItem in item.SubItems)
{
listViewChildNodeModifier(childItem);
if(childItem.Tag is TestingNode)
((TestingNode)childItem.Tag).Enabled = item.Checked;
}
}
}
你能不能不要这样做
foreach (ListViewItem item in this.ListView.Items)
{
for (int i = 0; i < item.SubItems.Count; i++)
{
item.SubItems[i].Checked = false;
//will something like this work for you let me know
}
}
另一个应该也可以工作的替代方法是下面的
foreach (ListViewItem.ListViewSubItem childItem in item.SubItems)
{
if(item.Checked)
{
item.Checked = false;
}
}