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 @ 2015-09-25 11:26  春天又来了  阅读(745)  评论(0编辑  收藏  举报