Я бы предложил использовать рекурсивные итерации.
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
- это то, что вам нужно.
@ Özkan: Какой номер 4? Вы хотите найти глубину? –
Родитель является «D», не так ли? –
@ Албин, да, я хочу найти глубину узла. – ozkank