[英]How to remove Node from Treeview by giving Node Name using C#
我通过此代码在My Treeview中添加节点
trvMenu.Nodes.Clear();
trvMenu.Nodes.Add("TestNode");
并成功添加,
现在我要删除它,所以我正在编写此代码
TreeNode tn = new TreeNode("TestNode");
this.trvMenu.Nodes.Remove(tn);
但它不工作!!!
目前我通过查找索引而不是通过索引删除它,并通过以下代码很好地删除它:
int foundIndex = 0;
int indexCount = 0;
foreach (TreeNode myString in trvMenu.Nodes)
{
if (myString.Text == "TestNode")
{
foundIndex = indexCount;
}
indexCount++;
}
this.trvMenu.Nodes[foundIndex].Remove();
请帮助我。
它不起作用,因为您要删除的是另一个对象。 请注意,您正在创建一个新的TreeNode。 要从TreeView中删除节点,您必须找到适当的对象。
在winforms中,您可以通过使用适当的密钥搜索节点来完成此操作。 但首先,添加到树中的节点必须具有以下名称:
TreeNode tn = new TreeNode();
tn.Name = "TestNode";
trvMenu.Nodes.Add(tn);
您可以在树中搜索它并将其删除
TreeNode[] nodes = trvMenu.Nodes.Find("TestNode", true);
if (nodes.Length > 0)
trvMenu.Nodes.Remove(nodes[0]);
您创建了一个具有特定引用的新节点,该引用与您添加的引用不同。
你可以使用Linq,只需写:
TreeNode node = this.trvMenu.Nodes.Cast<TreeNode>().FirstOrDefault( x => x.Name == "TestNode" )
if (node != null)
{
this.trvMenu.Nodes.Remove(node);
}
不确定“Name”属性是否正确,只需根据需要进行更改。
编辑:如果有人问以后为什么会发生这种情况:“删除”只查找确切的引用,这意味着您必须为其提供要删除的确切对象。 为此,您首先必须查找该对象,并将其传递给Remove。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.