删除树节点 请问 怎么才能删除TreeView中所有节点的 最后一层 子节点 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以递归的方法,删除没有子节点的节点.最好在初始化的时候,就分清哪一个节点是末级节点,比如,在Key 或 Tag 上作标记。这样删除有标记的节点就行了,自己也清楚,不用逻辑推断。 主要方法:if (treeView1.Nodes[0].Nodes[0].Nodes.Count == 0){ treeView1.Nodes[0].Nodes[0].Remove();} private void SearchDelTreeNode(TreeNodeCollection myCollect){foreach(TreeNode tn in myCollect) { if (tn.Nodes.Count ==0) { myCollect.Remove(tn); } if (tn.Nodes.Count>=1) { SearchDelTreeNode(tn.Nodes); }}}我是这么递归的 删不干净 treeView1.Nodes[0].Nodes[0].Remove(); private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < treeView1.Nodes.Count; i++) { i = NodeRemove(treeView1.Nodes[i], i); } } private int NodeRemove(TreeNode node, int i) { if (node.LastNode != null) { foreach (TreeNode znode in node.Nodes) { NodeRemove(znode, i); } } else { if (node.Parent == null) i--; treeView1.Nodes.Remove(node); } return i; } 先改一下试试private void SearchDelTreeNode(TreeNodeCollection myCollect){ foreach (TreeNode tn in myCollect) { if (tn.Nodes.Count == 0) { myCollect.Remove(tn); } else { SearchDelTreeNode(tn.Nodes); } }} for (int i = 0; i < tv_Menu.Nodes[0].ChildNodes.Count; i++)//第一级模块目录 { if (tv_Menu.Nodes[0].ChildNodes[i].ChildNodes.Count == 0) { tv_Menu.Nodes[0].ChildNodes.Remove(tv_Menu.Nodes[0].ChildNodes[i]); i--; } } 我发现了,foreach 不能用,删除节点后,集合就乱了.下面代码,我测试通过了.你试试private void DelTreeNode(TreeNodeCollection myCollect){ for (int i=0 ;i<myCollect.Count;i++) { if (myCollect[i].Nodes.Count == 0) { myCollect[i].Remove(); i--; } else DelTreeNode(myCollect[i].Nodes); }} 求c#中文全局键盘hook源码 c#查询数据库数据 ComponentOne Studio for .NET 注册问题,急急急! 读取网页的输入框并判断 DataGridView控件在操作完数据库的数据之后,是不是每次都要重新绑定一次才能体现更新? 求高手帮忙,visualstudio2010打包应用程序时,不想添加注册表,怎么弄? 跳出线程 碰上一个爆难的问题,问问大侠们.解决马上结贴. 关于窗口切换与关闭的问题 如何控制网页的上下移动????? 谁能给个短信猫的类的例子。 用DataGridView控件如何实现在非编辑情况下字段名为中文?
最好在初始化的时候,就分清哪一个节点是末级节点,比如,在Key 或 Tag 上作标记。
这样删除有标记的节点就行了,自己也清楚,不用逻辑推断。
{
treeView1.Nodes[0].Nodes[0].Remove();
}
{
foreach(TreeNode tn in myCollect)
{
if (tn.Nodes.Count ==0)
{
myCollect.Remove(tn);
}
if (tn.Nodes.Count>=1)
{
SearchDelTreeNode(tn.Nodes);
}
}
}
我是这么递归的 删不干净
{
for (int i = 0; i < treeView1.Nodes.Count; i++)
{
i = NodeRemove(treeView1.Nodes[i], i);
}
} private int NodeRemove(TreeNode node, int i)
{
if (node.LastNode != null)
{
foreach (TreeNode znode in node.Nodes)
{
NodeRemove(znode, i);
}
}
else
{
if (node.Parent == null)
i--;
treeView1.Nodes.Remove(node);
}
return i;
}
{
foreach (TreeNode tn in myCollect)
{
if (tn.Nodes.Count == 0)
{
myCollect.Remove(tn);
}
else
{
SearchDelTreeNode(tn.Nodes);
}
}
}
{
if (tv_Menu.Nodes[0].ChildNodes[i].ChildNodes.Count == 0)
{
tv_Menu.Nodes[0].ChildNodes.Remove(tv_Menu.Nodes[0].ChildNodes[i]);
i--;
}
}
{
for (int i=0 ;i<myCollect.Count;i++)
{
if (myCollect[i].Nodes.Count == 0)
{
myCollect[i].Remove();
i--;
}
else DelTreeNode(myCollect[i].Nodes);
}
}