【发布时间】:2019-02-11 14:35:12
【问题描述】:
请帮助我在字典中获取所有已检查的树视图节点,其中键是检查父节点,值是使用 c# 进行 linq 查询的已检查子节点列表。
【问题讨论】:
请帮助我在字典中获取所有已检查的树视图节点,其中键是检查父节点,值是使用 c# 进行 linq 查询的已检查子节点列表。
【问题讨论】:
假设每个父级只有一个子级,您可以创建一个扩展方法,如下所示。
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);
【讨论】: