1、string[] s = new string[] { "aaa", "bbb", "ccc", "ddd", "eee" }; treeView1.Nodes.Add(s[0]); TreeNode tn = treeView1.Nodes[0]; foreach (var item in s.Skip(1)) { tn.Nodes.Add(item); tn = tn.Nodes[0]; } 1、加载树节点的方法(无级限) /public static void InitTree(DataTable dt,string no
2、deID,string parentID,string nodeName,TreeNodeCollection treeNodeCollection,string rootNodeTag) { try { TreeNode tmpNode; DataView dv=new DataView(); dv.Table=dt; if (rootNodeTag!=""||rootNodeTag!=null) dv.RowFilter=parentID+"='"+rootNodeTag+"'"; fo
3、reach(DataRowView drv in dv) { tmpNode=new TreeNode(); tmpNode.Text=drv[nodeName].ToString(); tmpNode.Tag=drv[nodeID]; string father=drv[nodeID].ToString(); treeNodeCollection.Add(tmpNode); InitTree(dt,nodeID,parentID,nodeName,tmpNode.Nodes,father); } }
4、 catch(Exception te) { MessageBox.Show(te.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Warning); } } 注意:以下为弹出菜单项代码及相关的函数和方法 2、增加根节点 private void menuItemAddRoot_Click(object sender, System.EventArgs e) { try { TreeNode treeNode=new
5、 TreeNode("新节点"); treeNode.Tag=MaxRecordNumber(dataSet.Tables["tree"],"NodeID")+1; this.treeView.Nodes.Add(treeNode); AddDeleteNode(treeNode,RootNodeTag,"Add"); treeView.SelectedNode = treeNode ; LoadTreeView.LoadTreeNodeImage(treeView.SelectedNode,this.imageList1,NodeImage
6、Mode); //执行指定节点的选定操作 this.treeViewAfterSelect(treeView.SelectedNode ); menuItemRename_Click(new object(),new System.EventArgs()); } catch(Exception te) { MessageBox.Show(this,te.Message,"ErrorRoot",MessageBoxButtons.OK,MessageBoxIcon.Warning); } } 3、增
7、加子节点 private void menuItemAddChild_Click(object sender, System.EventArgs e) { try { //1.当一个节点有对应链接资料时,不可以增加子节点 //2.当一个节点有对应链接资料时,可以增加图片 if (this.IsHaveLineData(dataSet.Tables["data"],this.richTextBoxId)) { MessageBox.Show(this,"要增加子节点,必须在这个节点没有可以链接的资料后
8、才可以增加!","操作错误",MessageBoxButtons.OK,MessageBoxIcon.Information ); return; } TreeNode treeNode=new TreeNode("新节点"); treeNode.Tag=MaxRecordNumber(dataSet.Tables["tree"],"NodeID")+1; treeView.SelectedNode.Nodes.Add(treeNode); AddDeleteNode(treeNode,treeView.SelectedNode.Ta
9、g.ToString(),"Add"); treeView.SelectedNode = treeNode ; LoadTreeView.LoadTreeNodeImage(treeView.SelectedNode,this.imageList1,NodeImageMode); //执行指定节点的选定操作 this.treeViewAfterSelect(treeView.SelectedNode ); menuItemRename_Click(new object(),new System.EventArgs());
10、} catch(Exception te) { MessageBox.Show(this,te.Message,"ErrorChild",MessageBoxButtons.OK,MessageBoxIcon.Warning); } } 4、增加兄弟节点 private void menuItemAddBorther_Click(object sender, System.EventArgs e) { try { //判断是否选定组件中的根节点 if (treeView
11、SelectedNode.Parent==null) { MessageBox.Show ("节点<"+treeView.SelectedNode.Text.Trim()+ ">为根节点,要加入兄弟节点,请使用\"加入根节点\"选项!" , "Information" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; return; } TreeNode treeNode=new TreeNode("新节点"); treeNode.Ta
12、g=MaxRecordNumber(dataSet.Tables["tree"],"NodeID")+1; treeView.SelectedNode.Parent.Nodes.Add(treeNode); AddDeleteNode(treeNode,treeView.SelectedNode.Parent.Tag.ToString().Trim(),"Add"); treeView.SelectedNode = treeNode ; LoadTreeView.LoadTreeNodeImage(treeView.SelectedNode,this
13、imageList1,NodeImageMode); //执行指定节点的选定操作 this.treeViewAfterSelect(treeView.SelectedNode ); menuItemRename_Click(new object(),new System.EventArgs()); } catch(Exception te) { MessageBox.Show(this,te.Message,"ErrorParent",MessageBoxButtons.OK,MessageBoxIcon.Warning
14、); } } 5、刪除节点 private void menuItemDelete_Click(object sender, System.EventArgs e) { try { if(MessageBox.Show(this,"删除节点《"+treeView.SelectedNode.Text.Trim()+"》,与其对应的信息也将被删除,你确定要删除吗?","Information",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogRe
15、sult.OK) { //判断选定的节点是否存在下一级节点 if ( treeView.SelectedNode.Nodes.Count == 0 ) { //删除节点 TreeNode deleNode=treeView.SelectedNode; if (File.Exists(this.richTextBoxPictureName)) File.Delete(this.richTextBoxPictureName); int rows=myBindTree.Position; tr
16、eeView.Nodes.Remove(deleNode); dataSet.Tables["tree"].Rows[rows].Delete(); } else MessageBox.Show ( "请先删除此节点中的子节点!" , "Information" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; } } catch(Exception te) { MessageBox.Show(this,te.Mess
17、age,"ErrorDelete",MessageBoxButtons.OK,MessageBoxIcon.Warning); } } 6、节点重命名 private void menuItemRename_Click(object sender, System.EventArgs e) { TreeNode mySelectedNode=treeView.SelectedNode; if (mySelectedNode!=null) { treeView.SelectedNode=mySe
18、lectedNode;
treeView.LabelEdit=true;
mySelectedNode.BeginEdit();
}
else
MessageBox.Show("No tree node selected .\n","Invalid selection");
}
///
19、m>
/// 数据列
///
20、列按升序排列。多个列可用逗号隔开。
foreach(DataRow dr in dt.Rows)
{
number=Convert.ToInt16(dr[columnName].ToString().Trim())>number?Convert.ToInt16(dr[columnName].ToString().Trim()):number;
}
return number;
}
///
21、/// 要增加或删除的节点 /// 要增加或删除节点的父节点 /// 增删节点标志(add为增加节点,delete为删除节点,不区分大小写) private void AddDeleteNode(TreeNode addDeleteNode,string parentNodeId,string AddDeleteTag
22、) { try { if(AddDeleteTag.ToUpper()=="ADD") { object key=parentNodeId; DataRow dr=dataSet.Tables["tree"].Rows.Find(key); DataRow drNew=dataSet.Tables["tree"].NewRow(); if(dr!=null) { drNew["ParentID"]=dr["NodeID"]; } else { drNew["Par
23、entID"]=RootNodeTag; } drNew["NodeID"]=(int)addDeleteNode.Tag; drNew["NodeName"]=addDeleteNode.Text.Trim(); dataSet.Tables["tree"].Rows.Add(drNew); } else { if(AddDeleteTag.ToUpper()=="DELETE") { dataSet.Tables["tree"].Rows[myBindTree.Position].Delete(); } } } catch(Exception te) { MessageBox.Show(this,te.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Warning); } }






