收藏 分销(赏)

TreeView_树节点添加_删除的操作方法(递归调用显示子树).doc

上传人:xrp****65 文档编号:6144132 上传时间:2024-11-28 格式:DOC 页数:6 大小:42KB 下载积分:10 金币
下载 相关 举报
TreeView_树节点添加_删除的操作方法(递归调用显示子树).doc_第1页
第1页 / 共6页
TreeView_树节点添加_删除的操作方法(递归调用显示子树).doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
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   nodeID,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+"'";   foreach(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);   }   }   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   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,NodeImageMode);   //执行指定节点的选定操作   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、增加子节点    private   void   menuItemAddChild_Click(object   sender,   System.EventArgs   e)   {   try   {   //1.当一个节点有对应链接资料时,不可以增加子节点   //2.当一个节点有对应链接资料时,可以增加图片   if   (this.IsHaveLineData(dataSet.Tables["data"],this.richTextBoxId))   {   MessageBox.Show(this,"要增加子节点,必须在这个节点没有可以链接的资料后才可以增加!","操作错误",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.Tag.ToString(),"Add");   treeView.SelectedNode   =   treeNode   ;   LoadTreeView.LoadTreeNodeImage(treeView.SelectedNode,this.imageList1,NodeImageMode);   //执行指定节点的选定操作   this.treeViewAfterSelect(treeView.SelectedNode   );   menuItemRename_Click(new   object(),new   System.EventArgs());   }   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.SelectedNode.Parent==null)   {   MessageBox.Show   ("节点<"+treeView.SelectedNode.Text.Trim()+   ">为根节点,要加入兄弟节点,请使用\"加入根节点\"选项!"   ,   "Information"   ,   MessageBoxButtons.OK   ,   MessageBoxIcon.Information   )   ;   return;   }   TreeNode   treeNode=new   TreeNode("新节点");   treeNode.Tag=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.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);   }   }   5、刪除节点   private   void   menuItemDelete_Click(object   sender,   System.EventArgs   e)   {   try   {   if(MessageBox.Show(this,"删除节点《"+treeView.SelectedNode.Text.Trim()+"》,与其对应的信息也将被删除,你确定要删除吗?","Information",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)   {   //判断选定的节点是否存在下一级节点   if   (   treeView.SelectedNode.Nodes.Count   ==   0   )   {   //删除节点   TreeNode   deleNode=treeView.SelectedNode;   if   (File.Exists(this.richTextBoxPictureName))   File.Delete(this.richTextBoxPictureName);   int   rows=myBindTree.Position;   treeView.Nodes.Remove(deleNode);   dataSet.Tables["tree"].Rows[rows].Delete();   }   else   MessageBox.Show   (   "请先删除此节点中的子节点!"   ,   "Information"   ,   MessageBoxButtons.OK   ,   MessageBoxIcon.Information   )   ;   }   }   catch(Exception   te)   {   MessageBox.Show(this,te.Message,"ErrorDelete",MessageBoxButtons.OK,MessageBoxIcon.Warning);   }   }    6、节点重命名   private   void   menuItemRename_Click(object   sender,   System.EventArgs   e)   {   TreeNode   mySelectedNode=treeView.SelectedNode;   if   (mySelectedNode!=null)   {   treeView.SelectedNode=mySelectedNode;   treeView.LabelEdit=true;   mySelectedNode.BeginEdit();   }   else   MessageBox.Show("No   tree   node   selected   .\n","Invalid   selection");   }       ///   <summary>   ///   返回指定表的最大NodeID号码,也就是当前选定节点的tag   ///   </summary>   ///   <param   name="dt">数据表</param>   ///   <param   name="columnName">数据列</param>   ///   <returns>最大NodeID号码</returns>   private   int   MaxRecordNumber(DataTable   dt,string   columnName)   {   int   number=0;   DataView   dv=dt.DefaultView;   dv.Sort=columnName+"   ASC";//一个字符串,它包含列名,后跟“ASC”(升序)或“DESC”(降序)。在默认情况下,列按升序排列。多个列可用逗号隔开。   foreach(DataRow   dr   in   dt.Rows)   {   number=Convert.ToInt16(dr[columnName].ToString().Trim())>number?Convert.ToInt16(dr[columnName].ToString().Trim()):number;   }   return   number;   }       ///   <summary>   ///   在数据表中增加节点或删除节点   ///   </summary>   ///   <param   name="addDeleteNode">要增加或删除的节点</param>   ///   <param   name="parentNodeId">要增加或删除节点的父节点</param>   ///   <param   name="AddDeleteTag">增删节点标志(add为增加节点,delete为删除节点,不区分大小写)</param>   private   void   AddDeleteNode(TreeNode   addDeleteNode,string   parentNodeId,string   AddDeleteTag)   {   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["ParentID"]=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);   }   }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服