TreeView的一些应用

原创 2013年12月02日 21:13:38

导入图片的方法:

          if (imagelist != null)
            {
                tvw.ImageList = imagelist1;
            }

展开树节点的方法: node.Expand();

【1】绑定数据库的字段   

     public static IList<string> mylist = new List<string>();   //绑定数据表
        public static IList<string> mylistP = new List<string>();//绑定存储过程
        public static IList<string> mylistV = new List<string>();//绑定视图

          connstr = "Data Source=" + txtServerName.Text.Trim() + ";Initial Catalog=" + cmbDataBaseName.Text + ";Persist Security Info=True;User ID=" + txtUsername.Text.Trim() + ";Password=" + txtPwd.Text + "";
            SqlConnection oleConn = new SqlConnection(connstr);//链接数据库
            string sql = "SELECT   name   FROM   sysobjects   WHERE   xtype   =   'U'   AND   name   <>   'dtproperties'";
            //数据表信息(用户定义,除去系统表)【表0】
            sql +=   "  use "+cmbDataBaseName.Text+" select  a.name from  sysobjects  a where  a.xtype='P'  and  a.status>=0 order  by  a.name ";
            //数据库的存储过程【表1】
            sql += " use " + cmbDataBaseName.Text + " select name from sysobjects where type='V'";
            //数据库表的视图信息【表2】
            SqlCommand oleCmd = new SqlCommand(sql, oleConn);
            try
            {
                //oleConn.Open(); //均可
                oleCmd.Connection.Open();
            }
            catch
            {
                MessageBox.Show("数据库连接失败!");
                return;
            }
            mylist.Clear();
            mylistP.Clear();

            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(oleCmd);
            da.Fill(ds);  //其中有三个信息表
            //获取表【0】
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                mylist.Add(ds.Tables[0].Rows[i]["name"].ToString());
            }
            //获取存储过程【1】
            for (int j = 0; j < ds.Tables[1].Rows.Count; j++)
            {
                mylistP.Add(ds.Tables[1].Rows[j]["name"].ToString());
            }
            //获取视图【2】
            for (int k = 0; k < ds.Tables[2].Rows.Count; k++)
            {
                mylistV.Add(ds.Tables[2].Rows[k]["name"].ToString());
            }

*/*************************************************************************

【2】显示到树形节点。

      #region 绑定TreeView

        public void NewMethod()
        {
            //初始清除nodes
            tvLeft.Nodes.Clear();
            tvLeft.Nodes.Add("表");
            //绑定左边列表
            for (int i = 0; i < connect.mylist.Count; i++)
            {
                tvLeft.Nodes[0].Nodes.Add(connect.mylist[i], connect.mylist[i]);
                tvLeft.Nodes[0].Nodes[i].Nodes.Add("waiting","正在加载……");
            }
            //视图显示
            tvLeft.Nodes.Add("视图");
            for (int k = 0; k < connect.mylistV.Count; k++)
            {
                tvLeft.Nodes[1].Nodes.Add(connect.mylistV[k], connect.mylistV[k]);
                tvLeft.Nodes[1].Nodes[k].Nodes.Add("waiting", "正在加载……");
            }
            //存储过程显示
            tvLeft.Nodes.Add("存储过程");
            for (int j = 0; j < connect.mylistP.Count; j++)
            {
                tvLeft.Nodes[2].Nodes.Add(connect.mylistP[j], connect.mylistP[j]);
                tvLeft.Nodes[2].Nodes[j].Nodes.Add("waiting", "正在加载……");
            }
            //tvLeft.Nodes.Add("安全性");
        }

        #endregion

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

<<<<<<<<<<<<<<<<值得借鉴的应用<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 public static void LoadTreeNode_Navigation(TreeNode parentNode, DataTable table)
        {
            if ((parentNode == null) || (parentNode.Nodes.Count == 0))
            {
                return;
            }
            if (parentNode.Nodes[0].Text.Trim() != "...")
            {
                return;
            }
            parentNode.Nodes.Clear();
            string nodeKey = parentNode.Tag.ToString();
            DataRow[] rows = table.Select("ParentCode='" + nodeKey + "'", "NumberSort");//访问数据库的略
            if (rows.Length > 0)
            {
                foreach (DataRow row in rows)
                {   //读取字段
                    string key = row["FormName"] + "";
                    string text = row["Description"] + "";
                    TreeNode node = parentNode.Nodes.Add(text);
                    node.Tag = key;
                    DataRow[] srow = table.Select("ParentCode='" + key + "'");
                    if (srow.Length > 0)
                    {
                        node.Nodes.Add("...");
                    }
                }
            }
        }

【3】如何获取TreeView结点的文本值

注意树形节点的父子关系:

举例来体会吧:

 cmbTableName.SelectedText=tvLeft.SelectedNode.Parent.Name 这样可以获取或设置树节点的名称

e.Node.Name

 e.Node.Parent.Text == "视图"

e.Node.Parent.Parent.Text == "视图"

【4】选择树节点时候的颜色变化

private void treeView_navigation_BeforeSelect(object sender, TreeViewCancelEventArgs e)
        {
            if (treeView_navigation.SelectedNode != null)
            {
                treeView_navigation.SelectedNode.ForeColor = System.Drawing.Color.Black;
            }
            e.Node.ForeColor = System.Drawing.Color.Blue;
        }

【5】当选中某一行时候,改变对应的图标

方法一:

            treeViewDB.ImageList = treeImgs;              //指定某个imageList
            serverlistNode.ImageIndex =0;        //第一张图标
            serverlistNode.SelectedImageIndex = 10;  //当选择时候

方法二:

在TreeView控件的属性中设置SelectedImageKey即可。当然第一步是设置ImageList属性,绑定对应的图标集合

如图:


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c# winform TreeView与ListView的项互相拖动的应用

很久没写教程了,停顿了有两年之久了。今天我们来讨论讨论 winform 中TreeView与ListView,通观两者很相似,只是一个是树形结构,一个是列表结构。 今天自己创建的群里(21758...

WinFrom中TreeView中的应用

C#中的树很多。比如,Windows Form程序设计和Web程序设计中都有一种被称为TreeView的控件。TreeView控件是一个显示树形结构的控件,此树形结构与Windows资源管理器中的树形...

win32强化练习4.8_TreeView快速应用(处理消息)

只有进行过充分的练习,才能够真正掌握一门技能!通过进行或单项或综合的知识点强化训练,巩固和提高自己的windows程序设计的技能水平!...

Winforms: 在TreeView中应用Vista Explorer的新风格

从Vista开始,Windows的Explorer树型控件采用了新的风格。之前,如果在树的某结点前面有一个+或者-,用来表示该结点有子结点。而+/-表示结点的状态:+表示该结点可以打开并显示它的子结点...

企业级ERP树结构 bootstrap-treeview实践应用

1.产生环境:因为ERP中需要用到一种呈现功能,可以把类别折叠,又可以快速展开定位到某一行的数据。 如果没见过,那可以想象一下,就是把树和表格两个结构结合起来,树的一行就是表格,可以呈现出该一行的数据...
  • lkycan
  • lkycan
  • 2017年03月28日 15:31
  • 259

C# 系统应用之TreeView控件显示树状磁盘文件目录及加载图标

在C#系统应用毕设U盘防御软件中需要实现文件不可恢复的删除,首先需要实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录并加载相应图标.显示结果如下图所示: 一...

对c#中treeView的理解应用

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We...

C# 递归的应用 TreeView递归绑定数据

递归在WinForm中的应用最近做项目经常用到递归,刚开始很久没用,不太熟悉,现在研究了下,并写下了学习笔记及开发经验总结。递归热身一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调...

TreeView应用

  • 2013年06月01日 11:40
  • 33KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TreeView的一些应用
举报原因:
原因补充:

(最多只允许输入30个字)