c#——Winform TreeView 赋值(id,name,pid)类型数据

没想到给treeview赋值这么麻烦

还要用递归

不想多说,直接上代码

    var dgvTree = e.Control as DataGridViewTreeViewEditingControl;
            var items = _presenter.GetPtTree();

            //得到所有父节点为null的形成的数组  
            var rows = items.Where(w => w.PID == "");
            if (dgvTree == null) return;
            dgvTree.TreeView.Nodes.Clear();
            //遍历根节点数组  
            foreach (var row in rows)
            {
                var tmpNd = new TreeNode { Name = row.ID, Text = row.Term };
                //给根节点赋值  
                //将节点加入到树中  
                dgvTree.TreeView.Nodes.Add(tmpNd);
                //递归加入此根节点的子节点  
                _presenter.InitTreeView(tmpNd.Nodes, tmpNd.Name, items);
            }

presenter中的方法

  /// <summary>
        /// 初始化treeview
        /// </summary>
        /// <param name="nodes">节点集合</param>
        /// <param name="pid">父id</param>
        /// <param name="items">读取的数据库内容</param>
        public void InitTreeView(TreeNodeCollection nodes, string pid, List<TreeItem> items)
        {
            var service = WorkItem.RootWorkItem.Services.Get<IResourceDescService>();
            service.InitTreeView(nodes, pid, items);
        }
服务中的递归方法

  public void InitTreeView(TreeNodeCollection treeNodeCollection, string p, List<TreeItem> items)
        {
            //取得以此节点为父节点的数据行  
            var rows = items.Where(w => w.PID == p);
            foreach (var row in rows)
            {   //给根节点赋值 
                var tmpNd = new TreeNode { Name = row.ID, Text = row.Term };
                //将节点加入到树中  
                treeNodeCollection.Add(tmpNd);
                //递归加入此节点的子节点  
                InitTreeView(tmpNd.Nodes, tmpNd.Name, items);
            }
        }

以上 就可以将ID TERM  PID 结构的数据赋值给treeview了


然后再来个买一送一

树节点赋值这么麻烦,怎么吧一棵树的值付给另一棵树呢,难道还要循环读出循环写入

不用不用,这样写~~~


TreeView tv1=new TreeView();

TreeView tv2=new TreeView();

tv2.Nodes.Add((TreeNode)tv1.Nodes[0].Clone());





要在 C# WinForm 中实现修改密码功能,可以按照以下步骤进行: 1. 在 WinForm 中添加两个文本框和一个按钮,一个文本框是用于输入旧密码,另一个文本框是用于输入新密码,按钮是用于提交修改密码的操作。 2. 在按钮的 Click 事件中,编写代码实现密码修改的逻辑。首先,可以将用户输入的旧密码和新密码保存到字符串变量中,然后可以使用一些条件语句对密码进行验证,例如,旧密码是否正确,新密码是否符合要求等等。如果密码验证通过,可以调用相应的方法将新密码保存到数据库中。 下面是一个简单的密码修改示例代码: ```csharp private void btnChangePassword_Click(object sender, EventArgs e) { string oldPassword = txtOldPassword.Text.Trim(); string newPassword = txtNewPassword.Text.Trim(); // 验证旧密码是否正确 if (!ValidateOldPassword(oldPassword)) { MessageBox.Show("旧密码不正确!", "提示"); return; } // 验证新密码是否符合要求 if (!ValidateNewPassword(newPassword)) { MessageBox.Show("新密码不符合要求!", "提示"); return; } // 将新密码保存到数据库中 if (!SaveNewPassword(newPassword)) { MessageBox.Show("密码修改失败!", "提示"); return; } MessageBox.Show("密码修改成功!", "提示"); } private bool ValidateOldPassword(string password) { // TODO: 根据需要实现旧密码验证逻辑 return true; } private bool ValidateNewPassword(string password) { // TODO: 根据需要实现新密码验证逻辑 return true; } private bool SaveNewPassword(string password) { // TODO: 根据需要实现保存新密码到数据库的逻辑 return true; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值