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

  

  1. public partial class Form1 : Form
  2. {
  3. public Form1()
  4. {
  5. InitializeComponent();
  6. }
  7.  
  8. public DataSet ds = null;
  9.  
  10. private void button1_Click(object sender, EventArgs e)
  11. {
  12. tv_bind();
  13. }
  14.  
  15. public void tv_bind()
  16. {
  17.  
  18. //从数据库中读取分类信息至DataSet
  19. //绑定前先清空数据集
  20. treeView1.Nodes.Clear();
  21.  
  22. ds = DbHelperSQL.Query("select * from sys_rtxmenus");
  23. //如果数据库中有信息那么构造树,否则提示无接点
  24. if (ds.Tables[].Rows.Count > )
  25. {
  26. //清除树节点,从根添加树
  27. treeView1.Nodes.Clear();
  28. Add_tree(, (TreeNode)null);
  29. }
  30. else
  31. {
  32. treeView1.Nodes.Clear();
  33. TreeNode node = new TreeNode();
  34. node.Text = "暂无任何分类信息";
  35. treeView1.Nodes.Add(node);
  36. }
  37.  
  38. }
  39.  
  40. //递归树
  41. private void Add_tree(int pid, TreeNode pnode)
  42. {
  43. DataRow[] dr = ds.Tables[].Select("pid=" + pid);
  44. foreach (DataRow row in dr)
  45. {
  46. TreeNode node = new TreeNode();
  47. if (pnode == null)
  48. {
  49. node.Text = row["menuname"].ToString();
  50. node.Tag = row["id"].ToString();
  51. node.ToolTipText = row["menuurl"].ToString();
  52. treeView1.Nodes.Add(node);
  53. Add_tree(int.Parse(row["id"].ToString()), node);
  54. }
  55. else
  56. {
  57. node.Text = row["menuname"].ToString();
  58. node.Tag = row["id"].ToString();
  59. node.ToolTipText = row["menuurl"].ToString();
  60. pnode.Nodes.Add(node);
  61. Add_tree(int.Parse(row["id"].ToString()), node);
  62. }
  63. }
  64. }
  65.  
  66. //按扭的点击事件
  67. private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
  68. {
  69. // 设置显示图标的变换
  70. if (null == e.Node.FirstNode)
  71. {
  72. e.Node.ImageIndex = ;
  73. e.Node.SelectedImageIndex = ;
  74. }
  75. // 打开新的窗口,每一级对应一类窗口
  76. if (e.Node != null && null == e.Node.FirstNode)
  77. {
  78. string tag = e.Node.Tag.ToString();
  79. string name = e.Node.Text.ToString();
  80.  
  81. switch (name)
  82. {
  83. case "公告类型":
  84. MessageBox.Show("打开公告类型");
  85. break;
  86. case "公告列表":
  87. MessageBox.Show("打开公告列表");
  88. break;
  89.  
  90. }
  91. }
  92. }
  93.  
  94. }

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

  1. 关于WinForm TreeView的分享~

    最近在写个测试demo的时候使用到WinForm TreeView,已经好久没接触了,有些生疏,所以还是记录一下遇到的一些问题. 1.如果动态绑定TreeView,这个功能一般会在数据量不确定,需要去 ...

  2. C# Winform TreeView 的一些基本用法

    下面是treeview的用法TreeView组件是由多个类来定义的,TreeView组件是由命名空间"System.Windows .Forms"中的"TreeView& ...

  3. winform treeView 数据绑定

    转载:http://www.jetwu.cn/archives/737 winform treeView 数据绑定 private void Form1_Load(object sender, Eve ...

  4. C# winform多线程的小例子

    在文本框中输入一个数字,点击开始累加按钮,程序计算从1开始累计到该数字的结果.因为该累加过程比较耗时,如果直接在UI线程中进行,那么当前窗口将出现假死.为了有更好的用户体验,程序启动一个新的线程来单独 ...

  5. Winform TreeView 查找下一个节点

    转载:http://www.cnblogs.com/Ruiky/archive/2013/02/01/2888674.html public static class TreeViewHelper { ...

  6. Winform TreeView控件技巧

    在开发的时候经常使用treeview控件来显示组织结构啊,目录结构啊,通常会结合属性checkedboxs,来做选中,取消的操作下面是一个选中,取消的小例子,选中节点的时候,如果节点存在子节点,可以选 ...

  7. winform Treeview控件使用

    做角色菜单权限时用到treeview控件做树状显示菜单,简单总结了一下用法: 1.在winform窗体中拖入treeview控件,注意修改属性CheckBoxes属性为true,即在节点旁显示复选框 ...

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

    今天,主要弄了一下对于树型控件的一些方法,以及异步加载.参考: http://www.cnblogs.com/greatverve/archive/2012/03/23/winform-treevie ...

  9. C# winform TreeView中关于checkbox选择的完美类

    public static class TreeViewCheck { /// <summary> /// 系列节点 Checked 属性控制 /// </summary> / ...

  10. c# winform TreeView NODE(节点) 重命名或获取节点修改后的值

    在程序开发过程中我们经常用到treeview,还经常要修改节点的名字.节点名字修改后还想及时更新数据库.这时问题就来了,怎样获取NODE(节点)更新后的值呢?本人试了很多方法最终分析出treeview ...

随机推荐

  1. Maven中聚合与继承

    何为继承? --›继承为了消除重复,我们把很多相同的配置提取出来 --›例如:grouptId,version等 就像写java程序一样,对于有共性切重复的东西,就提取出来. 如有三个pom.xml配 ...

  2. HBase Shell输入命令无法删除问题解决技巧

    一.引言: HBase shell使用过程中,使用CRT客户端,命令输入后无法删除一直困绕着我,今天终于受不了,几番度娘,谷哥之后,终于有了解决方法,特共享给大家. 二.操作步骤 secureCRT中 ...

  3. Android数据存储(三)——SQLite

    如果需要一个更加健壮的数据存储机制,则需要使用一个关系型数据库,在Android上,则为SQLlite. SQLite的特点:轻量级.嵌入式的.关系型数据库.可移植性好,易使用,小,高效且可靠,与使用 ...

  4. Eclipse修改编码后乱码解决

    Eclipse用了一段时间,都是用的gbk编码的,突然想要规范下,强迫症犯了,于是将在Window->Preference->Appearances->Workspace修改Text ...

  5. Hibernate映射之实体映射<转载>

    实体类与数据库之间存在某种映射关系,Hibernate依据这种映射关系完成数据的存取,因此映射关系的配置在Hibernate中是最关键的.Hibernate支持xml配置文件与@注解配置两种方式.xm ...

  6. poj 2533 Longest Ordered Subsequence(dp)

    题目:http://poj.org/problem?id=2533 题意:最长上升子序列.... 以前做过,课本上的思想 #include<iostream> #include<cs ...

  7. poj2001 Shortest Prefixes (trie)

    读入建立一棵字母树,并且每到一个节点就增加这个节点的覆盖数. 然后再重新扫一遍,一旦碰到某个覆盖数为1就是这个单词的最短前缀了. 不知为何下面的程序一直有bug……不知是读入的问题? type nod ...

  8. UVA 753 A Plug for UNIX 电器插座(最大基数匹配,网络流)

    题意: 给n个插座,m个设备(肯定要插电了),k种转换头可无限次使用(注意是单向的),问有多少设备最终是不能够插上插座的? 分析: 看起来就是设备匹配插座,所以答案不超过m.这个题适合用网络流来解. ...

  9. eclipse中相同代码的高亮显示

    在eclipse中 当选中一串字符时,让其他相同字符代码都高亮显示,操作如下: windows-> preferences-> java-> Editor-> Mark Occ ...

  10. apache开源项目--HIVE

    Hive是一个基于Hadoop的数据仓库平台.通过hive,我们可以方便地进行ETL的工作.hive定义了一个类似于SQL的查询语言:HQL,能 够将用户编写的QL转化为相应的Mapreduce程序基 ...