如何在字典中获取Treeview父子节点

时间:2019-02-11 14:35:12

标签: windows forms linq c#-4.0

请帮助我获取字典中所有树状视图的选中节点,其中,键是选中的父节点,值是使用linq查询(使用c#)选中的子节点的列表。

1 个答案:

答案 0 :(得分:1)

假设每个父级只有一个孩子,则可以按照以下方法创建扩展方法。

public static class Extensions
{
        internal static IEnumerable<KeyValuePair<string,IEnumerable<string>>> GetSelectedList(this TreeNodeCollection tr)
        {
            var childCollection = new List<string>();
            foreach (var trNode in tr.OfType<TreeNode>())
            {
                if (!trNode.Checked) continue;

                childCollection.Clear();
                childCollection.AddRange(trNode.Nodes.OfType<TreeNode>().Where(x => x.Checked).Select(x=>x.Text));

                yield return new KeyValuePair<string, IEnumerable<string>>(trNode.Text, childCollection);

            }
        }
    }

现在您可以按以下方式使用它。

var selectedData = treeview.Nodes.GetSelectedList().ToDictionary(x => x.Key, y => y.Value);