
如何让treeview所有节点全部展开
展开全部
利用递归关键的是找出要删除节点的父节点(假如是C),找到父节点C之后继续利用递归找出C的父节点B,找到父节点B之后继续找出B的父节点A. . 还需要加一个判断,判断一下 父节点.Parent.Parent 看部分代码:
string parentName="";
private void 删除选中节点ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
TreeNode node = treeView1.SelectedNode.Parent;
if (ChuLi.deleteNode(NodeId))//这个是我自己定义的方法,大家可以忽略
{
if (node != null)//如果是子节点不是根节点,那么就展开
{
parentName = node.Text;
//展开的应该是父节点
ExpandNodes(treeView1.Nodes);//调用-----------------------------------------
}
}
else
{
MessageBox.Show("删除失败!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//遍历所有节点,找出指定节点
private void ExpandNodes(TreeNodeCollection tnodes)
{
foreach (TreeNode node in tnodes)
{
if (node.Text == parentname)//比较判断,所以需要知道所选节点的父节点名字:node.Parent.Text
{
ExpandParentNodes(node.Parent.Nodes);//调用下一个递归方法
}
ExpandNodes(node.Nodes);
}
}
//关键点所在
private void ExpandParentNodes(TreeNodeCollection tnodes)
{
TreeNode parentNode;
foreach (TreeNode node in tnodes)
{
parentNode = node;
if (parentNode.Parent != null)
{
parentNode.Parent.Expand();
if (parentNode.Parent.Parent != null)//判断父节点的父节点是否为空,如果已经达到根节点就是null
{
ExpandParentNodes(parentNode.Parent.Parent.Nodes);
}
else
break;//已经达到根节点,退出
}
}
}
string parentName="";
private void 删除选中节点ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
TreeNode node = treeView1.SelectedNode.Parent;
if (ChuLi.deleteNode(NodeId))//这个是我自己定义的方法,大家可以忽略
{
if (node != null)//如果是子节点不是根节点,那么就展开
{
parentName = node.Text;
//展开的应该是父节点
ExpandNodes(treeView1.Nodes);//调用-----------------------------------------
}
}
else
{
MessageBox.Show("删除失败!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//遍历所有节点,找出指定节点
private void ExpandNodes(TreeNodeCollection tnodes)
{
foreach (TreeNode node in tnodes)
{
if (node.Text == parentname)//比较判断,所以需要知道所选节点的父节点名字:node.Parent.Text
{
ExpandParentNodes(node.Parent.Nodes);//调用下一个递归方法
}
ExpandNodes(node.Nodes);
}
}
//关键点所在
private void ExpandParentNodes(TreeNodeCollection tnodes)
{
TreeNode parentNode;
foreach (TreeNode node in tnodes)
{
parentNode = node;
if (parentNode.Parent != null)
{
parentNode.Parent.Expand();
if (parentNode.Parent.Parent != null)//判断父节点的父节点是否为空,如果已经达到根节点就是null
{
ExpandParentNodes(parentNode.Parent.Parent.Nodes);
}
else
break;//已经达到根节点,退出
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询