Winform- TreeView的使用例子

  自动递归生成树,点击树节点的事件在treeView1_AfterSelect里编写,不多说了,直接上代码,备注在这里一下

  

复制代码
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public DataSet ds = null;

        private void button1_Click(object sender, EventArgs e)
        {
            tv_bind();
        }

        public void tv_bind()
        {

            //从数据库中读取分类信息至DataSet
            //绑定前先清空数据集
            treeView1.Nodes.Clear();

            ds = DbHelperSQL.Query("select * from sys_rtxmenus");
            //如果数据库中有信息那么构造树,否则提示无接点
            if (ds.Tables[0].Rows.Count > 0)
            {
                //清除树节点,从根添加树
                treeView1.Nodes.Clear();
                Add_tree(0, (TreeNode)null);
            }
            else
            {
                treeView1.Nodes.Clear();
                TreeNode node = new TreeNode();
                node.Text = "暂无任何分类信息";
                treeView1.Nodes.Add(node);
            }

        }

        //递归树
        private void Add_tree(int pid, TreeNode pnode)
        {
            DataRow[] dr = ds.Tables[0].Select("pid=" + pid);
            foreach (DataRow row in dr)
            {
                TreeNode node = new TreeNode();
                if (pnode == null)
                {
                    node.Text = row["menuname"].ToString();
                    node.Tag = row["id"].ToString();
                    node.ToolTipText = row["menuurl"].ToString();
                    treeView1.Nodes.Add(node);
                    Add_tree(int.Parse(row["id"].ToString()), node);
                }
                else
                {
                    node.Text = row["menuname"].ToString();
                    node.Tag = row["id"].ToString();
                    node.ToolTipText = row["menuurl"].ToString();
                    pnode.Nodes.Add(node);
                    Add_tree(int.Parse(row["id"].ToString()), node);
                }
            }
        }

        //按扭的点击事件
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            // 设置显示图标的变换
            if (null == e.Node.FirstNode)
            {
                e.Node.ImageIndex = 1;
                e.Node.SelectedImageIndex = 0;
            }
            // 打开新的窗口,每一级对应一类窗口
            if (e.Node != null && null == e.Node.FirstNode)
            {
                string tag = e.Node.Tag.ToString();
                string name = e.Node.Text.ToString();


                switch (name)
                {
                    case "公告类型":
                        MessageBox.Show("打开公告类型");
                        break;
                    case "公告列表":
                        MessageBox.Show("打开公告列表");
                        break;

                }
            }
        }


    }
复制代码

 

posted @   春天又来了  阅读(755)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2012-09-25 维塔斯音乐收藏
2012-09-25 Java- 事件处理机制
点击右上角即可分享
微信分享提示