为什么 TreeView1.Nodes.Remove(treenode);不能删除节点?页面还是显示
public void BindData()
{
for (int i = 0; i < arrlisttree.Count; i++)
{
TreeNode treenode = (TreeNode)arrlisttree[i];
TreeView1.Nodes.Remove(treenode);
}
}
ArrayList arrlisttree = new ArrayList();
private void FindNodeByCode(TreeNodeCollection nodes, string Code)
{
foreach (TreeNode node in nodes)
{
//此节点是否有子节点
TreeNode node_2;
if (node.ChildNodes.Count < 2 && node.ChildNodes.Count > 0)
{
// nodes.Remove(node);
arrlisttree.Add(node);
//有子节点,则开始递归调用
FindNodeByCode(node.ChildNodes, Code);
}
else
{
if (node.ChildNodes.Count > 1)
{
FindNodeByCode(node.ChildNodes, Code);
}
}
}
}
这个是假删除吧,没有跟数据库交互呀,而且逻辑确实有问题
确实是假删除
你的页面加载数据是如何实现的呢
if (node.ChildNodes.Count < 2 && node.ChildNodes.Count > 0) { .................................. } else { if (node.ChildNodes.Count > 1) { .................................. } }
代码逻辑有问题,请先解决你的代码逻辑问题。
for (int i = 0; i < arrlisttree.Count; i++) { TreeNode treenode = (TreeNode)arrlisttree[i]; TreeView1.Nodes.Remove(treenode); }
这个循环逻辑有问题,当执行一遍循环体后,Count属性的值就改变了,变成了Count-1
arrlisttree 是一个ArrList 谢谢你的回答