/**/ /// <summary> /// 添加到节点 /// </summary> /// <param name="dt"></param> /// <returns></returns> public List < TreeNode > GetTreeNode(DataTable dt) ... { int count = dt.Rows.Count; int[] ownerID = new int[count]; int[] fatherID = new int[count]; TreeNode[] treeNodes = new TreeNode[count]; _dicTree = new Dictionary<int, TreeNode>(count); int index = 0; foreach (DataRow dr in dt.Rows) ...{ ownerID[index] = (int)dr["CallCardsSortID"]; fatherID[index] = (int)dr["fatherID"]; treeNodes[index] = new TreeNode(dr["CallCardsSortName"].ToString()); treeNodes[index].Tag = dr;// ownerID[index]; treeNodes[index].ImageIndex = 0; treeNodes[index].SelectedImageIndex = 1; _dicTree.Add(ownerID[index], treeNodes[index]); index++; } List<TreeNode> father = new List<TreeNode>(); for (int i = 0; i < count; i++) ...{ int fID = fatherID[i]; if (_dicTree.ContainsKey(fID) && fID != ownerID[i]) ...{ _dicTree[fID].Nodes.Add(_dicTree[ownerID[i]]); } else ...{ father.Add(_dicTree[ownerID[i]]); } } return father; } 示例二: private void button1_Click( object sender, EventArgs e) ... { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]...{ new DataColumn("ID",Type.GetType("System.Int32")), new DataColumn("fatherID",Type.GetType("System.Int32")), new DataColumn("Name",Type.GetType("System.String")) }); for (int i = 0; i < 10; i++) ...{ DataRow dr = dt.NewRow(); dr["ID"] = i+1; dr["fatherID"] = i*2; dr["Name"] = "朋友"+i.ToString(); dt.Rows.Add(dr); } List<TreeNode> tns = Press.UnlimitedTree.GetTree(dt); this.treeView1.Nodes.AddRange(tns.ToArray()); }