C# Winform 动态创建treeview实现.

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:31:13
假如我有一个关系表如下
a->b c->b d->a e->b f->c g->d h->d
现在这些数据保存在一个数组里面.现在数组可能会变不是固定的.要动态创建一个TreeView.目前实现了,但是效率很低,尤其当数组的个数很大时.效率实在是不堪入目.请教有没有高手解决这个问题.
我的实现伪代如下:
数组中存的是data={a,b,c,d,e,f,g,h}.
专门有个函数来获取他的指向值如:get(a)=b;
int i;
TreeNode[] td=new TreeNode[data.Count];
TreeNode RootNode = new TreeNode(data[0].ToString());
td[0] = RootNode;
this.treeView1.Nodes.Add(RootNode);
for ( i = 1; i < this.data.Count; i++)
{
TreeNode SubNode = new TreeNode(data[i].ToString());
td[i] = SubNode;
}

for (i = 0; i < this.data.Count; i++)
{
string name = td[i].Text.ToString();
for (int k = 0; k < this.data.Count; k++)
{

/// </summary>
/// <param name="dataTable">从数据库中读取数据</param>
/// <param name="TreeNodes">TREE对象</param>
/// <param name="parentId">节点</param>
private void BindTreeView(DataTable dataTable, TreeNodeCollection TreeNodes, string parentId)
{
DataView dataView = new DataView(dataTable);
TreeNode node;
dataView.RowFilter = "Menu_parent=" + "'" + parentId + "'";//数据分流
foreach (DataRowView dataRowView in dataView)
{
node = new TreeNode();
node.Text = dataRowView["Menu_name"].ToString();//添加节点的名称
node.NavigateUrl=dataRowView["Menu_url"].ToString();//获取节点的URL地址
TreeNodes.Add(node);
BindTreeView(dataTable, node.ChildNodes, dataRowView["menu_Id"].ToString());//递归添加<