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;

                }
            }
        }

    }
时间: 2024-12-20 11:47:53

Winform- TreeView的使用例子的相关文章

winform treeview 通过节点名称添加子节点

/// <summary> /// 添加人员节点(利用TreeNodeCollection) /// </summary> /// <param name="tnc">TreeNodeCollection(TreeView的节点集合)</param> /// <param name="pid_val">父id的值</param> /// <param name="id"

Winform TreeView 查找下一个节点

转载:http://www.cnblogs.com/Ruiky/archive/2013/02/01/2888674.html public static class TreeViewHelper { private static IEnumerable<TreeNode> childNodes(this TreeNode node) { return node.Nodes.Cast<TreeNode>() .SelectMany(x => x.selfAndChildNod

Winform TreeView控件技巧

在开发的时候经常使用treeview控件来显示组织结构啊,目录结构啊,通常会结合属性checkedboxs,来做选中,取消的操作下面是一个选中,取消的小例子,选中节点的时候,如果节点存在子节点,可以选中全部的子节点:如果取消一个节点的选中状态,当前节点同时又存在父节点的话,就取消父节点的选中状态. private void trvPost_AfterCheck(object sender, TreeViewEventArgs e) { //通过鼠标或者键盘触发事件,防止修改节点的Checked状

winform基础控件-例子学习

1.如图实现整数计算器 ComboBox控件: Items属性:添加集合中的项. this.comoper.Items.AddRange(new object[] { "+", "-", "x", "/"}); TextBox: 对TextBox的输入文本有限制: 1)只能输入数值型(整数和小数): 2)小数点不能开头,小数只能输入一位: 3)不满足要求的输入统一不接受. 实现方法 使用TextBox的KeyPress事件:在

winform treeview绑定数据 DOM操作

form1 public void treeView() { // datatable 定义变量接收 传归来的值 DataTable Father = new BuMenDA().ConSql(); //查询出来的的结果不可能为空 for循环一条条查出来 for (int a = 0; a <= Father.Rows.Count; a++) {// 定义新的节点接a行的 Name列 TreeNode fatherNode = new TreeNode(Father.Rows[a]["Na

Winform Treeview 的按需加载

最近项目里用到treeview,原先设计的是一开始就把所有数据都加载到treeview里,后来发现客户的数据量实在太大,加载所有数据要2分钟,这个是客户没法接受的.后来就考虑到用户也不是一开始就要看所有的数据,用户也是一层一层地展开,所以我们就考虑是不是可以实现以当用户展开某个结点时才加载当前结点下面的数据.一番查找后,发现treeview有BeforeExpand事件可以实现我们的需求. 下面介绍具体的实现代码: 1. 首先只加载各部门(结点)的信息   1: List<string> m_

winform TreeView的一些用法以及异步加载

今天,主要弄了一下对于树型控件的一些方法,以及异步加载.参考: http://www.cnblogs.com/greatverve/archive/2012/03/23/winform-treeview.html 下面是TreeView的一些用法 private void BindTreeView() { treeView1.LabelEdit = false;//不可编辑 //添加结点 TreeNode root = new TreeNode(); root.Text = "根节点"

C# winform TreeView中关于checkbox选择的完美类(转载)

public static class TreeViewCheck { /// <summary> /// 系列节点 Checked 属性控制 /// </summary> /// <param name="e"></param> public static void CheckControl(TreeViewEventArgs e) { if (e.Action != TreeViewAction.Unknown) { if (e.No

Winform - TreeView控件,只展开根目录

TreeNode类型是有Expand和ExpandAll这两个方法.而Treeview是只有ExpandAll的,想要展开根目录下面的节点的话 //只展开根目录 if (this.treeView1.Nodes.Count > 0) this.treeView1.Nodes[0].Expand();

C# winform treeview node添加右键菜单并选中节点

转自http://www.cnblogs.com/luluping/archive/2010/03/03/1677206.html (1)要向窗体添加一个TreeView控件 (2)再添加一个ContextMenuStrip控件: (3)就要给TreeView添加一个MouseDown事件,代码如下: private void treeView1_MouseDown(object sender, MouseEventArgs e)         ...{             if (e.B