如何使用C#查找Treeview中的所有已检查节点

时间:2014-11-29 13:59:37

标签: c# treeview

这是我正在使用的代码,但我总是从函数中获取一个空白字符串。

我该如何解决这个问题?

private string GetArrayofCheckedNodes()
{
    string arrCheckedNodes = "";
    ArrayList al = new ArrayList();
    foreach (TreeNode node in TreeView1.Nodes)
    {
        if (node.Checked == true) // Checking whether a node is checked or not.
        {
            al.Add(node.Text);
        }
    }
    for (int i = 0; i < al.Count; i++)
    {
        arrCheckedNodes += al[i].ToString() + " , ";
    }
    return arrCheckedNodes;
} 

1 个答案:

答案 0 :(得分:1)

我假设您想要所有已检查的节点。 TreeView1.Nodes仅返回第一级,因此您需要递归树。此外,您可以使用string.Join()将结果值连接在一起。

private string GetArrayofCheckedNodes()
{
    return string.Join(" , ", GetCheckedNodes(treeView1.Nodes));
}

public List<string> GetCheckedNodes(TreeNodeCollection nodes)
{
    List<string> nodeList = new List<string>();
    if (nodes == null)
    {
        return nodeList;
    }

    foreach (TreeNode childNode in nodes)
    {
        if (childNode.Checked)
        {
            nodeList.Add(childNode.Text);
        }
        nodeList.AddRange(GetCheckedNodes(childNode.Nodes));
    }
    return nodeList;
}