1

我正在开发 asp.net 中的应用程序。我使用树视图来显示类别。将选中的节点值存储到数据库后,我想取消选中所有树视图节点。为此,我有以下代码:

foreach (TreeNode node in TreeView1.CheckedNodes)
        {
            node.Checked=false;

        }

但它显示错误:集合已修改;枚举操作可能无法执行

请帮我。谢谢!

4

5 回答 5

1

foreach只读的 ,您不能将集合更改为 foreach。
你必须使用for 循环

for (int i = 0; i < TreeView1.Nodes.Count; i++)
{
     TreeView1.Nodes[i].Checked = false;
}
于 2013-10-30T12:41:01.880 回答
1

CheckedNodes.Count 变量在每次传递时都会重新评估。因此,只需继续清除 0 索引处的复选框即可。

int tvCT;
tvCT = TreeView1.CheckedNodes.Count;
if (tvCT > 0)
{
    for (int i = 0; i < tvCT; i++)
    {
        TreeNode node = TreeView1.CheckedNodes[0];
        node.Checked = false;
    }
}
于 2013-11-03T01:57:08.713 回答
1
//foreach (TreeNode node in TreeView1.CheckedNodes)
for(int i=0; i<TreeView1.CheckedNodes.Count; i++)
{
   TreeNode node = TreeView1.CheckedNodes[i];
   node.Checked = false;
}
于 2013-10-30T12:21:28.423 回答
1
while (TreeView1.CheckedNodes.Count > 0)
{
    TreeView1.CheckedNodes[0].Checked = false;
}

这是一个对我有用的非常简单的块。

于 2014-05-15T22:20:52.503 回答
0
 foreach (TreeNode node in TreeView1.Nodes)
            {
                node.Checked = false;
                foreach (TreeNode item1 in node.ChildNodes)
                {
                    item1.Checked = false;

                    foreach (TreeNode item2 in item1.ChildNodes)
                    {
                        item2.Checked = false;
                    }
                }
            }

核实.....!这是工作

于 2014-03-11T07:53:34.037 回答