treeView1.SelectedNode = treeView1.Nodes[0];  //选中当前treeview控件的根节点为当前节点添加子节点:

   TreeNode tmp;

  tmp = new TreeNode("需要添加的内容");

   treeView1.SelectedNode.Nodes.Add(tmp);

   treeView1.SelectedNode = tmp;

  为父节点添加子节点:

    TreeNode tmp;

      tmp = new TreeNode("需添加的内容");

      treeView1.SelectedNode.Parent.Nodes.Add(tmp);

       treeView1.SelectedNode = tmp;

  设置当鼠标移开treeView控件时选中状态不消失

  treeView1.HideSelection = false;

  显示某一目录下的文件

    private void PaintTreeView(TreeView treeView, string fullPath)

 {

      try

      {

         treeView.Nodes.Clear();   //清空TreeView

      DirectoryInfo dirs = new DirectoryInfo(fullPath);  //获得程序所在路径的目录

    DirectoryInfo[] dir = dirs.GetDirectories();  //获取目录下文件夹选项

      FileInfo[] file = dirs.GetFiles();  //获取目录下文件选项

     int dircount = dir.Count();  //获取文件夹对象数量

     int filecount = file.Count();   //获取文件对象数量

      for (int i = 0; i < dircount; i++)   //循环文件夹

     {

        treeView.Nodes.Add(dir[i].Name);

       string pathNode = fullPath + "\\" + dir[i].Name;

      GetMultiNode(treeView.Nodes[i], pathNode);

     }

      for (int j = 0; j < filecount; j++)

     {

        treeView.Nodes.Add(file[j].Name);

    }

      }

   catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

 private bool GetMultiNode(TreeNode treeNode, string path)

      {

    if (Directory.Exists(path) == false)

    {

      return false;

   }

    DirectoryInfo dirs = new DirectoryInfo(path);   //获得程序所在路径的目录对象

   DirectoryInfo[] dir = dirs.GetDirectories();  //获得目录下文件夹对象

   FileInfo[] file = dirs.GetFiles();   //获得目录下文件对象

    int dircount = dir.Count();  //获取文件夹对象数量

     int filecount = file.Count();   //获取文件对象数量

    int sumcount = dircount + filecount;

    if (sumcount == 0)

    {

     return false;

    }

    for (int j = 0; j < dircount; j++)   //循环文件夹

   {

     treeNode.Nodes.Add(dir[j].Name);

    string pathNodeB = path + "\\" + dir[j].Name;

    GetMultiNode(treeNode.Nodes[j], pathNodeB);

   }

   for (int j = 0; j < filecount; j++)  //循环文件

   {

    treeNode.Nodes.Add(file[j].Name);

     }

    return true;

   }

  判断不同层次的节点,显示不同的右键内容:

     private void treeView1_MouseDown(object sender, MouseEventArgs e)

    {

       TreeNode temp = treeView1.GetNodeAt(e.X, e.Y);   //获取当前鼠标点击的位置

     treeView1.LabelEdit = false;   //设置当前不可编辑

    if (temp != null)

     {

         treeView1.SelectedNode = temp;

        temp.ToolTipText = "右键可编辑";  //鼠标放在节点位置,提示右键可编辑

       if (temp.Level == 0)

       {

        treeView1.ContextMenuStrip = 模板分类管理;

            //绑定不同的右键选项,ContextMenuStrip名字模板分类管理

          }

       else

       treeView1.ContextMenuStrip = 模板管理;

      }

     else

      {

          treeView1.SelectedNode = null;

        treeView1.ContextMenuStrip = null;

      return;

     }

    }

TreeView控件使用的更多相关文章

  1. 基于Treeview控件遍历本地磁盘

    一.前言 Treeview控件常用于遍历本地文件信息,通常与Datagridview与ImageList搭配.ImageList控件用于提供小图片给TreeView控件,DatagridView通常显 ...

  2. Win32中TreeView控件的使用方法,类似于资源管理器中文件树形显示方式

    首先是头文件,内容如下: #include <tchar.h> #include "..\CommonFiles\CmnHdr.h" #include <Wind ...

  3. asp TreeView控件的使用

    相对于之前发过一个TreeView控件的使用方法 本次利用js操作,页面无刷新,性能提高 Css编码可能时我的模板页样式被继承下来,导致页面变乱,不需要的可以去掉 前台 <style> . ...

  4. C#TreeView控件遍历文件夹下所有子文件夹以及文件

    一直对递归的理解不深刻,有时候觉得很简单,可是用起来总会出错.这里需要在TreeView控件里显示一个文件夹下的所有目录以及文件,毫无意外的需要用到递归. 一开始,想到用递归写一个生成每一个节点(Tr ...

  5. 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。

    利用TreeView控件加载文件,必须遍历处所有的文件和文件夹. 深搜算法用到了递归. using System; using System.Collections.Generic; using Sy ...

  6. 将treeview控件内容导出图片

    项目中有一项需求,需要将项目中的treeview控件展示的树状结构直接导成一张图片.网上方法很多,但很多都是屏幕截屏,我的解决思路是新建一个用户控件,将主窗体的Treeview的数据传给用户控件(不要 ...

  7. 给C#的treeview控件的部分节点添加checkbox

    一.先初始化treeview this.treeView1.CheckBoxes = true; this.treeView1.ShowLines = false; this.treeView1.Dr ...

  8. 部门树形结构,使用Treeview控件显示部门

    部门树形结构.设计张部门表用于存储部门编码.名称.上级部门id,使用Treeview控件显示部门树,并实现部门增删改.移动.折叠等功能.特别提示,部门有层级关系,可用donetbar的adtree控件 ...

  9. C#Winform中treeView控件使用总结

    1.如何展开结点时改变图标(注意:不是选中时) 要在目录中使用图标首先要加入一个控件ImageList(命名为imageList1),然后可以按图片的index或名称引用图片. 然后需要在TreeVi ...

随机推荐

  1. Struct2 csv文件上传读取中文内容乱码

    网络上搜索下,发现都不适合 最终改写代码: FileInputStream fis = null; InputStreamReader isr = null; BufferedReader br= n ...

  2. python 通用 修饰器

    import functools def log(option): def dec(func): def swapper(*arg, **karg): functools.update_wrapper ...

  3. Visual Studio 2015 各版本对比及下载地址

    2015年7月20日23时30分,微软举行了Visual Studio 2015的发布会,跟随者Visual Studio 2015 而来的是,.net 开源,C#支持wp,ios,android三大 ...

  4. 第一章-第十四题(Hello world程序)

    题目:请找一个同学结对 (参看本书结对编程的内容),两人共同工作 (不能分开干活),从上面的列表中选取两个平台,在每个平台上,写一个最简单的 "Hello World" 类型的程序 ...

  5. GDB十分钟教程

    原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx 本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程 ...

  6. c#处理空白字符

    空白字符是指在屏幕不会显示出来的字符(如空格,制表符tab,回车换行等).空格.制表符.换行符.回车.换页垂直制表符和换行符称为 “空白字符”,因为它们为与间距单词和行在打印的页 )的用途可以读取更加 ...

  7. 体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图

    这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配 ...

  8. 一道关于Promise应用的面试题

    题目:红灯三秒亮一次,绿灯一秒亮一次,黄灯2秒亮一次:如何让三个灯不断交替重复亮灯?(用Promse实现) 三个亮灯函数已经存在: function red(){ console.log('red') ...

  9. (转)webHttpBinding、basicHttpBinding和wsHttpBinding区别

      (1)webHttpBinding与basicHttpBinding / wsHttpBinding的区别: webHttpBinding is the REST-style binding, w ...

  10. Java中常见的29个运行异常

    ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotR ...