2010-09-23 83 views
3

我有一个树根,最初有一个根节点作为根。如果我右键单击根节点,我将有一个上下文菜单显示一些选项作为新和其他如果我选择新我将向根节点添加一个子节点。如果我再次右键单击根节点,如果根有子节点,我想清除所有子节点并添加一个新的子节点我该如何做到这一点如何检查树视图根节点是否存在子节点

回答

1

毕竟最终的答案如下

if (tvwACH.HitTest(location).Node.Nodes.Count > 0 && tvwACH.SelectedNode.Parent == null) 
     { 
      foreach (TreeNode node in tvwACH.Nodes) 
      { 
       node.Nodes.Clear(); 
      } 
    } 
+0

我忘了这个节点数...:D再次感谢@Dotnet – gumuruh 2016-09-07 01:57:56

6

TreeNode.Nodes给你一个所有子节点的列表你正在看的节点。

然后,您可以在该集合上调用Clear来删除所有的子节点。

+0

但我怎么能检查子节点存在的根,我不能得到它 – Dotnet 2010-09-23 12:02:51

+0

@dorababu:您可以使用'MouseDown'事件中的位置和'HitTest'调用。看到我的回答这个问题的代码来做到这一点:http://stackoverflow.com/questions/3760256/changing-the-node-value-of-treeview/3760405#3760405 – 2010-09-23 12:26:02

+0

其实我的问题是不同的我只问这个问题这工作,但我不能得到一个树形视图的孩子数 – Dotnet 2010-09-23 12:29:14

0

'right click'处理程序,假设你用鼠标点击,您可以使用事件参数TreeNodeMouseClickEventArgs得到当前节点...

void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
    { 
     if (e.Button == MouseButtons.Right) 
     { 
     TreeNode selectedNode = e.Node; 
     } 
    } 
0

您可以检查TreeNode.Nodes财产。如果计数大于零,那么你有子节点,否则不

-1
   foreach (TreeNode node in treeview.Nodes) 
        { 

         if (node.ChildNodes.Count != 0) 
         { 

          //Node exists 

         } 
         else 
         { 

          //Node doesn't exists 

         } 
        } 
相关问题