如果我有一个 TreeView (myTreeview),如何获取所选节点的所有父节点(父节点、父节点的父节点等)的列表?
我建议您创建一组自己的树助手,例如,下一个是针对您的问题的:
public static class TreeHelpers
{
public static IEnumerable<TItem> GetAncestors<TItem>(TItem item, Func<TItem, TItem> getParentFunc)
{
if (getParentFunc == null)
{
throw new ArgumentNullException("getParentFunc");
}
if (ReferenceEquals(item, null)) yield break;
for (TItem curItem = getParentFunc(item); !ReferenceEquals(curItem, null); curItem = getParentFunc(curItem))
{
yield return curItem;
}
}
//TODO: Add other methods, for example for 'prefix' children recurence enumeration
}
以及用法示例(在您的上下文中):
IList<TreeNode> ancestorList = TreeHelpers.GetAncestors(node, x => x.Parent).ToList();
为什么这比使用 list.Add() 更好? - 因为我们可以使用惰性 LINQ 函数,例如 .FirstOrDefault(x => ...)
附:要将“当前”项包含到可枚举结果中,请使用TItem curItem = item
, 代替TItem curItem = getParentFunc(item)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)