日期:2014-05-18 浏览次数:20982 次
XmlNodeList root = eep.DocumentElement.ChildNodes;
foreach (XmlElement r in root)
{
Console.WriteLine(r.name);
}
private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
//获取单击的节点
TreeNode root = treeView1.GetNodeAt(new Point(e.X, e.Y));
//该节点是否被选中
bool isChecked = root.Checked;
if (root != null)
{
//该节点的选中状态影响其子孙节点的状态
FooChild(root, isChecked);
//该节点的选中状态影响其父祖节点的状态
FooParent(root);
}
}
/**方法:递归子节点跟随其全选或全不选 Modify By Wangxu 2010-2-25*/
private void FooChild(TreeNode node, bool isChecked)
{
node.Checked = isChecked;
foreach (TreeNode nd in node.Nodes)
FooChild(nd, isChecked);
}
/**方法:递归父节点跟随其全选或全不选 Add By Wangxu 2010-2-25*/
private void FooParent(TreeNode root)
{
if (root.Parent != null)
{
//兄弟节点被选的个数
int brotherNodeCheckedCount = 0;
//遍历该节点的兄弟节点
foreach (TreeNode node in root.Parent.Nodes)
{
if (node.Checked == true)
brotherNodeCheckedCount += 1;
}
//兄弟节点全没选
if (brotherNodeCheckedCount == 0)
{
TreeNode parentNode = root.Parent;
parentNode.Checked = false;//其父节点也不选
FooParent(parentNode);
}
//兄弟节点中只要有一个被选
if (brotherNodeCheckedCount == 1)
{
TreeNode parentNode = root.Parent;
parentNode.Checked = true;
FooParent(parentNode);//其父节点也被选
}
}
}
------解决方案--------------------
没有遍历所有节点的好办法,只能递归了,递归是能够保证不管你有多少层子节点都能显示出来的
------解决方案--------------------
我一直是用递归遍历的、
不过有人说他这不是用递归的、没去看、你可以看看
http://blog.csdn.net/xianfajushi/article/details/7756584
------解决方案--------------------
我上面发的就是 递归的例子啊 前段时间刚刚用过的