Я бы предложил использовать рекурсивные итерации.
private TreeNode FindNode(TreeView tvSelection, string matchText)
{
foreach (TreeNode node in tvSelection.Nodes)
{
if (node.Tag.ToString() == matchText)
{
return node;
}
else
{
TreeNode nodeChild = FindChildNode (node, matchText);
if (nodeChild != null) return nodeChild;
}
}
return (TreeNode)null;
}
Вы можете использовать эту логику для определения многих вещей о вашем узле, и эта структура также позволяет вам расширять то, что вы можете делать с узлом и критериями, которые вы хотите искать. Вы можете отредактировать мой пример в соответствии со своими потребностями.
Таким образом, в этом примере вы можете перейти в E и ожидать, что узел E вернется, тогда
если родительским свойством возвращаемого узла будет родитель, к которому вы стремитесь.
tn treenode = FindNode(myTreeview, "E")
tn.parent
- это значение, которое вы ищете.