gpt4 book ai didi

c# - 值中带有正斜杠的 FindNode 方法 TreeView

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:51 27 4
gpt4 key购买 nike

我有一个 TreeView 控件。下面的代码用于查找具体的父节点。

TreeView AllProductsTreeView;

TreeNode nodeFound = AllProductsTreeView.FindNode("AAA/Sensors");

AAA - 类别

传感器 - 子类别

这工作正常,但当子类别值包含正斜杠时会出现问题。

TreeView AllProductsTreeView;

TreeNode nodeFound = AllProductsTreeView.FindNode("AAA/Sensors/Energy");

AAA - 类别

传感器/能源- 子类别

在上述情况下,它为 nodeFound 对象返回空值。

如何使用带正斜杠的查找节点方法来查找子类别。

提前致谢!

最佳答案

字符“/”对FindNode(主/子节点区分)有特殊的功能,似乎没有任何办法可以避免它。一种选择是根本不使用此字符作为节点名称。如果您不想更改名称,您可以使用自定义功能来补充内置功能,如下面的代码所示:

string nodePath = "AAA/Sensors/Energy";
TreeNode nodeFound = null;
string[] temp = nodePath.Split('/');
if (temp.Length > 2)
{
//More than one "/"
TreeNode mainNode = AllProductsTreeView.FindNode(temp[0]);
string childPath = nodePath.Substring(temp[0].Length + 1, nodePath.Length - temp[0].Length - 1);
foreach (TreeNode childNode in mainNode.ChildNodes)
{
if (childNode.Value == childPath)
{
nodeFound = childNode;
break;
}
}
}
else
{
nodeFound = AllProductsTreeView.FindNode(nodePath);
}

如您所见,此代码仅在给定名称包含一个“/”或更少时才依赖于FindNode;在所有其他情况下,它会提取主节点名称并根据 Value 属性(“/”字符不会触发任何特殊功能)查看其所有子节点。

澄清:上面的代码可以处理验证以下任何结构的任何情况(独立于子节点名称中“/”的数量):

Main_node_without_slashes/Child_node_containing_any_number_of_slashes
Main_node_without_slashes

如果主节点包含正斜杠,则必须更新此代码,方法是设置一种方法来告诉代码何时应将“/”理解为主子区分以及何时应将其作为名称的一部分。

关于c# - 值中带有正斜杠的 FindNode 方法 TreeView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18119834/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com