现在在winform中用treeview,有2个按钮,点击第一个按钮可以新增一个  父节点。点击另一个按钮可以新增到子节点。代码如何写??高手帮帮忙

解决方案 »

  1.   

    Node node=new Node ()
    tree.nodes.add(node)//父节点
    Node nodeChild=new Node ()
    node.nodeS.add(nodeChild)//子节点
      

  2.   

                  
    TreeNode  tn = new TreeNode(“新节点”);
    tn.Tag = newzb;
    treeview1.SelectedNode.Nodes.Add(tn);就ok了
      

  3.   

    有没有例子哦,给个例子看看。 我就像如何我想添加父节点就添加父节点,想添加子节点就添加子节点。这样的列子。在winform中如何写呢
      

  4.   

      #region   treeview Event
            private void treeview_customer_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.F2)
                {
                    cxmEdit(sender, e);
                }
            }        /// <summary>
            /// 文本编辑完成之后,更新操作
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void treeview_customer_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
            {
                try
                {
                    if (e.Label != null)
                    {
                        txt_CodeName.Text = e.Label.Trim();
                        UpdateNodeToDB(e.Node);
                    }
                }
                catch (Exception exx)
                { BasicCheck.ShowError(exx.ToString()); }
            }        private void treeview_customer_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (e.Node != null)
                {
                    TreeNode node = treeview_customer.SelectedNode;
                    ZBZone zb = (ZBZone)((ZBZone)node.Tag).Clone();
                    zb.CodeName = node.Text;//把名称更新到文本框
                    SetText(zb);
                }
            }        //树结构右键时,显示右键菜单
            private void treeview_customer_MouseUp(object sender, MouseEventArgs e)
            {
                switch (e.Button)
                {
                    case MouseButtons.Right:
                         Cmx_customer.Show(treeview_customer, new Point(e.X, e.Y));
                        return;
                    default:
                        break;
                }
            }
            /// <summary>
            /// 鼠标右键按下时 正确的获取node位置
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void treeview_customer_MouseDown(object sender, MouseEventArgs e)
            {
                  SetSelectedNodeByPosition(treeview_customer, e.X, e.Y);
                 if (treeview_customer.SelectedNode == null) { return; }
                 if (e.Button == MouseButtons.Right) { return; }        }
            public void SetSelectedNodeByPosition(TreeView tv, int mouseX, int mouseY)
            {
                TreeNode node = null;
                try
                {
                    Point pt = new Point(mouseX, mouseY);
                    tv.PointToClient(pt);
                     
                    node = tv.GetNodeAt(pt);
                    
                    tv.SelectedNode = node;
                   
                    if (node == null) return;                if (!node.Bounds.Contains(pt)) { return; }            }
                catch (Exception err) { BasicCheck.ShowError(err.Message); }
                return;
            }
            #endregion  #region Inittree Insert Update Delete
            /// <summary>
            /// 构造父节点树
            /// </summary>
            /// <param name="trc">树集合</param>
            /// <param name="lzb">实体集合</param>
            private void TreeViewLoad(TreeNodeCollection trc,List<ZBZone> lzb)
            {
                treeview_customer.Nodes.Clear();
                foreach (ZBZone zb in lzb)
                {
                    int icount = zb.ParentID.Split(',').Count();
                    if (icount == 2)
                    {
                        TreeNode tn = new TreeNode(zb.CodeName);
                        tn.Tag = zb;//设置tag属性   
                        tn.ImageIndex = 0;
                      
                        trc.Add(tn);
                        treeview_customer.Nodes[0].ExpandAll();
                        
                    }
                    else
                    {
                        InitChildNode(trc[trc.Count - 1].Nodes,zb,zb.ParentID);
                    }
                }
            }
            /// <summary>
            /// 递归构造子节点
            /// </summary>
            /// <param name="trchild">父节点集合</param>
            /// <param name="strparent">parentid长度</param>
            /// <param name="name">节点名称</param>
            private void InitChildNode(TreeNodeCollection trchild, ZBZone zbz,string parentid)
            {
                string stemp = parentid;
                if (stemp.IndexOf(',') != 0)
                    {
                            stemp = stemp.Substring(0, stemp.LastIndexOf(','));
                            int icount = stemp.Split(',').Count();
                            if (icount ==2)
                            {
                                TreeNode tn1 = new TreeNode(zbz.CodeName);
                                tn1.ImageIndex = 2;
                                tn1.SelectedImageIndex = 2;
                                tn1.Tag = zbz;
                                trchild.Add(tn1);
                            }
                            else
                            {
                                InitChildNode(trchild[trchild.Count - 1].Nodes, zbz, stemp);
                            }
                    }
            }
            /// <summary>
            /// 新增树形节点
            /// </summary>
            /// <param name="node">树形节点的父节点</param>
            private ZBZone InsertNewNodeToDB(TreeNode node,string NodeName)
            {  
                       ZBZone newzb = new ZBZone();
                    if (node != null)
                    {
                        TreeNode tn = new TreeNode(); ;
                       
                        string stemp = string.Empty;
                        if (NodeName.CompareTo(BasicCheck.RootNode) == 0)//插入根节点
                        {                        newzb = (ZBZone)((ZBZone)treeview_customer.Nodes[treeview_customer.Nodes.Count - 1].Tag).Clone();                        stemp = newzb.ParentID;//获取最大的跟深度标示
                            stemp = (Convert.ToInt32(stemp.Substring(0, stemp.IndexOf(','))) + 1).ToString();//每增加一个节点,数字自动加1
                            stemp = string.Concat(stemp, ",", stemp);
                            
                            newzb.CodeName = BasicCheck.RootNode;
                            newzb.ParentID = stemp;
                            newzb.CodeID = DBManagement.RowID;                        tn = new TreeNode(newzb.CodeName);
                            tn.ImageIndex = 0;
                            tn.Tag = newzb;                        treeview_customer.Nodes.Add(tn);
                           return newzb;
                        }
                        else//插入子节点
                        {
                             
                            if (node.Nodes.Count != 0)
                            {
                                  newzb = (ZBZone)((ZBZone)node.Nodes[node.Nodes.Count - 1].Tag).Clone();
                                  stemp = newzb.ParentID;
                                  stemp = (Convert.ToInt32(stemp.Substring(stemp.LastIndexOf(',')+1,1))+1).ToString();
                                  stemp = string.Concat(newzb.ParentID.Substring(0, newzb.ParentID.LastIndexOf(',') + 1), stemp);  
                            }
                            else
                            {
                                newzb = (ZBZone)((ZBZone)node.Tag).Clone();
                                stemp = string.Concat(newzb.ParentID, ",", "1");//累加parentid深度
                            }
                            newzb.CodeID = DBManagement.RowID;
                            newzb.CodeName = BasicCheck.Title;
                            newzb.ParentID = stemp;
                          
                            tn = new TreeNode(newzb.CodeName);
                            tn.ImageIndex = 2;
                            tn.SelectedImageIndex = 2;
                            tn.Tag = newzb;
                            node.Nodes.Add(tn);
                        } 
                        treeview_customer.SelectedNode = tn;
                    }
                
                    return newzb;
            }        /// <summary>
            /// 更新树形节点 
            /// </summary>
            /// <param name="node">选中的node节点
            ///</param>
            /// <returns>更新条数</returns>
            private int UpdateNodeToDB(TreeNode node)
            {
                int icount = 0;
                if (node != null)
                {
                    ZBZone zb = (ZBZone)((ZBZone)node.Tag).Clone();
                  icount=  DBManagement.Update( GetText(2, zb.ParentID),zb.CodeID);//更新据库
                }
                return icount;
            }
            /// <summary>
            /// 删除节点
            /// </summary>
            /// <param name="node"></param>
            private int idelcount = 0;
            private void DeleteNodeToDB(TreeNode node)
            {  
                
                TreeNode currentnode = new TreeNode();
                currentnode=node;
                if (currentnode != null)
                {
                    ZBZone zb = (ZBZone)((ZBZone)currentnode.Tag).Clone();
                    idelcount += DBManagement.Delete(zb.CodeID); 
                }
                if (currentnode.Nodes.Count > 0)
                {
                    for (int j = 0; j < currentnode.Nodes.Count; j++)
                    {
                        DeleteNodeToDB(currentnode.Nodes[j]);
                    }
                }
               
            } 
            // 查询节点
            private TreeNode GetTreeviewNode(TreeNodeCollection nodesToSearch, string title)
            {
                TreeNode currNode = null;
                for (int i = 0; i < nodesToSearch.Count; i++)
                {
                    currNode = nodesToSearch[i];
                    if (currNode.LastNode == null)
                    {
                        if (currNode.Text.CompareTo(title) == 0)
                        {
                            return currNode;
                        }
                    }
                    else
                        GetTreeviewNode(currNode.Nodes, currNode.Text);
                }
                return currNode;
            }
            #endregion