我有一个带有级联复选框的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;
}
}
}
答案 0 :(得分:1)
你能不能这样做
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;
}
}