как перейти от данных TreeNode.FullPath и получить фактический treenode? - PullRequest
3 голосов
/ 16 февраля 2010

Я хотел бы сохранить некоторые данные из TreeNode.FullPath, а затем позже я хотел бы повторно расширить все до этого момента. Есть ли простой способ сделать это?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 06 мая 2010

У меня была похожая проблема (но я просто хотел снова найти триодод) и нашел это:

http://c -sharpe.blogspot.com / 2010/01 / Get-TreeNode-из-полный path.html

я знаю, что это отвечает только на часть вашей проблемы, но лучше, чем отсутствие ответов вообще;)

0 голосов
/ 14 июня 2018

Вы можете записать его как метод расширения для TreeNodeCollection:

using System;
using System.Linq;
using System.Windows.Forms;

namespace Extensions.TreeViewCollection
{
    public static class TreeNodeCollectionUtils
    {
        public static TreeNode FindTreeNodeByFullPath(this TreeNodeCollection collection, string fullPath, StringComparison comparison = StringComparison.InvariantCultureIgnoreCase)
        {
            var foundNode = collection.Cast<TreeNode>().FirstOrDefault(tn => string.Equals(tn.FullPath, fullPath, comparison));
            if (null == foundNode)
            {
                foreach (var childNode in collection.Cast<TreeNode>())
                {
                    var foundChildNode = FindTreeNodeByFullPath(childNode.Nodes, fullPath, comparison);
                    if (null != foundChildNode)
                    {
                        return foundChildNode;
                    }
                }
            }

            return foundNode;
        }
    }
}
...