求助C#中WinFrom中调用TreeView控件的问题,急急急!!!!
在winFrom中已动态的根据数据库创建好了树结构,请问如何查找指定的的节点,并修改该树的节点属性:如改变节点的Check,让Checked = true?(注明:该树存在多个子节点)
我采用递归的方法也没办法实现该功能
代码如下:
//循环遍历树节点
string sFindValue = "AA"
private void SaveRightLevel(TreeNode treeNode)
{
if (treeNode.Name = sFindValue)
{
TreeNode.Checked = True;
}
foreach (TreeNode tn in treeNode.Nodes)
{
SaveRightLevel(tn);
}
}
private void CallRightLevel(TreeView treeView)
{
//查找根目录数
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
{
SaveRightLevel(n);
}
}
调用方法如下:
//tvRight是一颗已生成的树
CallRightLevel(tvRight);
它并没有使我已生成树tvRight的节点Checked属性发生变化,原因是因为treeNode已经是一个实例,而不是tvRight树节点的引用.所以请高手指点迷经,谢谢!
--------------------编程问答-------------------- TreeNode.Checked = True;
改为:
treeNode.Checked = True;
--------------------编程问答-------------------- private void SaveRightLevel(TreeNode treeNode)
{
if (treeNode.Name == "AA")
{
treeNode.Checked = True;
}
foreach (TreeNode tn in treeNode.Nodes)
{
SaveRightLevel(tn);
}
}
private void CallRightLevel(TreeView treeView)
{
//查找根目录数
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
{
SaveRightLevel(n);
}
} --------------------编程问答-------------------- 在构造树节点时楼主先为树节点的name赋值,如果楼主数据库中使用了主键,最好使用主键进行赋值以保证树节点的name是唯一的。
如果树中所有节点在程序启动后都已经加载的话楼主可以使用treeView1.Nodes.Find 方法来查找到要操作的树节点再进行相关操作。
如果是程序加载时只加载上层节点,那就只能使用其它方法。呵呵。 --------------------编程问答-------------------- 很明显 if (treeNode.Name = sFindValue) 应该改成 if (treeNode.Name == sFindValue) 吧,不过照理说这样编译都通不过的
补充:.NET技术 , C#