C# 如何检查treeview根节点是否存在子节点

C# 如何检查treeview根节点是否存在子节点,c#,winforms,treeview,C#,Winforms,Treeview,我有一个树状视图,其根节点最初作为根节点。如果我在根节点上单击鼠标右键,我将显示一个上下文菜单,其中一些选项为“新建”,其他选项如果我选择“新建”,我将向根节点添加一个子节点。如果我再次右键单击根节点,并且如果根节点有子节点,我希望清除所有子节点并添加一个新的子节点。如何执行此操作?为您提供正在查看的节点的所有子节点的列表 然后,您可以调用该集合来删除所有子节点。在的“右键单击”处理程序中,假设您使用鼠标单击,您可以使用事件参数树enodemouseClickEventArgs来获取当前节点 v

我有一个树状视图,其根节点最初作为根节点。如果我在根节点上单击鼠标右键,我将显示一个上下文菜单,其中一些选项为“新建”,其他选项如果我选择“新建”,我将向根节点添加一个子节点。如果我再次右键单击根节点,并且如果根节点有子节点,我希望清除所有子节点并添加一个新的子节点。如何执行此操作?

为您提供正在查看的节点的所有子节点的列表


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

的“右键单击”
处理程序中,假设您使用鼠标单击,您可以使用事件参数树enodemouseClickEventArgs来获取当前节点

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

您可以检查TreeNode.Nodes属性。如果count大于零,则您有子节点,否则不

最终答案如下

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

您也可以尝试相反的方法,即检查当前节点是否有父节点

if(treeView1.SelectedNode.Parent == null) {} //parent
else{} //child

但如何检查无法获取的根的子节点是否存在it@dorababu:您可以使用
MouseDown
事件中的位置以及
HitTest
调用。请参阅我对这个问题的回答,以获取代码:实际上,我的问题是不同的,我只问了一个有效的问题,但我无法获得a的子计数treeview@dorababu:对不起,我不知道这也是你的问题。我不确定我是否理解你的问题。如果您始终只想拥有第一个根节点(并且您知道treeview将始终至少拥有一个节点),则可以调用
myTreeView.Nodes[0]
将为您提供一个
TreeNode
,它将拥有自己的
节点集。这是
TreeView.Nodes
属性,如下所述:我忘记了此节点计数…:再次感谢@Dotnet
if(treeView1.SelectedNode.Parent == null) {} //parent
else{} //child