我在我的 C# Win Forms 应用程序中使用 Dev Components Advance TreeView 控件。树视图节点具有用于选择/取消选择节点的复选框。我在树视图中启用了多个节点选择。我想在任何节点的“选中/取消选中”上获取所有选定的节点。我尝试使用树视图的“SelectedNodes”属性返回选定节点的集合,但它总是返回“1”节点,例如最后选择的节点。
更新 问题在于子节点的选择。如果我多选所有父节点,那么我会得到正确的计数,但如果是子节点,计数总是 1 请建议
我在我的 C# Win Forms 应用程序中使用 Dev Components Advance TreeView 控件。树视图节点具有用于选择/取消选择节点的复选框。我在树视图中启用了多个节点选择。我想在任何节点的“选中/取消选中”上获取所有选定的节点。我尝试使用树视图的“SelectedNodes”属性返回选定节点的集合,但它总是返回“1”节点,例如最后选择的节点。
更新 问题在于子节点的选择。如果我多选所有父节点,那么我会得到正确的计数,但如果是子节点,计数总是 1 请建议
您可以使用一个简单的递归函数,只需在此处传递根节点。如果您不想递归,请将选定的节点列表挂接到事件处理程序中以进行检查/取消检查。
static public List<HierarchyNode> GetCheckedNodes(HierarchyNode node)
{
var nodes = new List<HierarchyNode>();
foreach (HierarchyNode childNode in node.Nodes)
{
nodes.AddRange(GetCheckedNodes(childNode));
}
if (node.Checked)
{
nodes.Add(node);
}
return nodes;
}