日期:2014-05-20  浏览次数:21084 次

获取treeView先中CheckBox的所有子节点
获取treeView选中CheckBox的所有子节点


就是我选取了那些子节点前的CheckBox就我要这些子节点


怎么做到?

高手,给点示例代码?


------解决方案--------------------
啥,学习
------解决方案--------------------
private void button1_Click(object sender, EventArgs e)
{
List<TreeNode> listNodes = new List<TreeNode>();
foreach(TreeNode node in treeViewMenu.Nodes)
{
FindCheckNode(node, listNodes);
}
}

private void FindCheckNode(TreeNode node, List<TreeNode> listNodes)
{
if (node.Checked)
{
listNodes.Add(node);
}
foreach (TreeNode childnode in node.Nodes)
{
FindCheckNode(childnode, listNodes);
}
}
------解决方案--------------------
如果你选中的节点hasnodes foreach遍历子节点
应该用递归,要不是不知道节点有多少层



没有用过treeview 见笑
------解决方案--------------------
3楼的应该是比较成熟的代码了吧,呵呵
------解决方案--------------------
TreeNode nodeP = new TreeNode();
if (nodeP.Checked)
{
if (nodeP.ChildNodes.Count > 0)
{
for (int i = 0; i < nodeP.ChildNodes.Count; i++)
{
//获取节点ID
string strID = nodeP.ChildNodes[i].Value;
//获取节点值
string strText = nodeP.ChildNodes[i].Text.ToString();
}
}
}
------解决方案--------------------
探讨
private void button1_Click(object sender, EventArgs e)
        {
            List <TreeNode> listNodes = new List <TreeNode>();
            foreach(TreeNode node in treeViewMenu.Nodes)
            {
                FindCheckNode(node, listNodes);
            }
        }

        private void FindCheckNode(TreeNode node, List <TreeNode> listNodes)
        {
            if (node.Checked)
            {
                listNodes.Add(node);
            }
            foreach (TreeNode childnode in node.Nodes)
            {
                FindCheckNode(childnode, listNodes);
            }
        }

------解决方案--------------------
我要的规律就是 原来节点的排列格式 然后 把选中的 插入一树节点下(节点已经知道的)