我正在开发 asp.net 中的应用程序。我使用树视图来显示类别。将选中的节点值存储到数据库后,我想取消选中所有树视图节点。为此,我有以下代码:
foreach (TreeNode node in TreeView1.CheckedNodes)
{
node.Checked=false;
}
但它显示错误:集合已修改;枚举操作可能无法执行
请帮我。谢谢!
foreach是只读的 ,您不能将集合更改为 foreach。
你必须使用for 循环:
for (int i = 0; i < TreeView1.Nodes.Count; i++)
{
TreeView1.Nodes[i].Checked = false;
}
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;
}
}
//foreach (TreeNode node in TreeView1.CheckedNodes)
for(int i=0; i<TreeView1.CheckedNodes.Count; i++)
{
TreeNode node = TreeView1.CheckedNodes[i];
node.Checked = false;
}
while (TreeView1.CheckedNodes.Count > 0)
{
TreeView1.CheckedNodes[0].Checked = false;
}
这是一个对我有用的非常简单的块。
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;
}
}
}
核实.....!这是工作