我有一个树形视图,初始的根节点为“Root”。如果我右键单击根节点,将显示上下文菜单,并显示一些选项,如“新建”和其他选项。如果我选择“新建”,则会向根节点添加一个子节点。如果我再次右键单击根节点,如果根节点有子节点,我想清除所有子节点并添加一个新的子节点,我该怎么做呢?
最终答案如下
if (tvwACH.HitTest(location).Node.Nodes.Count > 0 && tvwACH.SelectedNode.Parent == null )
{
foreach (TreeNode node in tvwACH.Nodes)
{
node.Nodes.Clear();
}
}
void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeNode selectedNode = e.Node;
}
}
你也可以尝试相反的操作,即检查当前节点是否有父节点。
if(treeView1.SelectedNode.Parent == null) {} //parent
else{} //child
foreach (TreeNode node in treeview.Nodes)
{
if (node.ChildNodes.Count != 0)
{
//Node exists
}
else
{
//Node doesn't exists
}
}
MouseDown
事件中的位置以及HitTest
方法来实现。请参考我的回答,其中包含相关代码:http://stackoverflow.com/questions/3760256/changing-the-node-value-of-treeview/3760405#3760405 - Hans OlssonTreeView.Nodes
属性,如此处所述:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.treeview.nodes.aspx - Hans Olssoninfo.Node.Text = "new path";
替换为以下两行代码info.Node.Nodes.Clear();
和info.Node.Nodes.Add(newNode);
,那么这是否符合你的要求? - Hans Olsson