62,041
社区成员
发帖
与我相关
我的任务
分享
#region 实现添加节点的方法
public void addnodes()//添加树的根节点
{
ds = this.DBAdataset();//获取数据库的数据
if (ds.Tables[0].Rows.Count > 0)
{
TreeNode n = null;
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
//string[] pic = (string[])arr[i];
if (ds.Tables[0].Rows[i][1].ToString().Equals("0"))//当上级id是0为根节点
{
n = new TreeNode();
n.Text = ds.Tables[0].Rows[i][2].ToString();
treeView1.Nodes.Add(n);
n.Value = ds.Tables[0].Rows[i][0].ToString();//存储当前节点ID
n.ShowCheckBox = true;
//n.Checked = aTreeNode.DefaultStatus;
n.Expanded = n.Checked;
//n.Tag = pic[0];
//n.ImageIndex = 0;
//n.SelectedImageIndex = 0;
this.addnode1(n); //添加子节点
}
}
}
}
public void addnode1(TreeNode N)//添加树的所有子节点
{
TreeNode n = null;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (N.Value.Equals(ds.Tables[0].Rows[i][1].ToString()))
{
n = new TreeNode();
n.Text = ds.Tables[0].Rows[i][2].ToString();
N.ChildNodes.Add(n);
n.Value = ds.Tables[0].Rows[i][0].ToString();//存储当前节点ID
n.ShowCheckBox = true;
//n.Checked = aTreeNode.DefaultStatus;
n.Expanded = n.Checked;
this.addnode1(n);
}
}
}
#endregion
//用来存储选中节点
TreeNode ChecedkNode=new TreeNode();
//当前选中节点传给它
CheckedNode=treeView1.SelectedNode;
//递归函数遍历所有节点,找出并选中,展开
void test(TreeNode node1)
{
foreach (TreeNode node in node1.Nodes)
{
if(node.Text==CheckedNode.Text)
{
this.treeView1.SelectedNode = node;
treeView1.SelectedNode.Expand();
}
test(node);
}
}
//调用刚才递归并传参,保证所有节点被遍历
foreach (TreeNode node in this.treeView1.Nodes)
{
test(node);
}
#region 根据传来的ID和层次,展开到指定的节点
/// <summary>
/// 根据传来的ID和层次,展开到指定的节点
/// Author:liuqj
/// DATE:2008-5-12
/// </summary>
/// <param name="tnc">节点集合</param>
/// <param name="id">节点的value</param>
/// <param name="depth">节点的深度</param>
private void FondNode(TreeNodeCollection tnc, string id, int depth)
{
foreach (TreeNode tn in tnc)
{
if (tn.Value == id && tn.Depth == depth - 1)
{
tn.Select();
//this.ExpandNode(tn);
ExpandNode(tn);
break;
}
else
this.FondNode(tn.ChildNodes, id, depth);
}
}
/// <summary>
/// 将选择的节点的所有父节点展开
/// </summary>
/// <param name="tn"></param>
private void ExpandNode(TreeNode tn)
{
while (tn.Parent is TreeNode) //将选择的节点的所有父节点展开
{
tn.Parent.Expanded = true;
tn = tn.Parent;
}
}
#endregion
treeView1.ExpandAll();
这样不就全部展开了吗?treeView1.ExpandAll();
这样不就全部展开了吗?