TreeView 树菜单 节点

《1》TreeView树的基本操作  (创建了一个windows窗体应用程序 ,里面放了一个TreeView控件)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TreeView的使用
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //添加根节点
        private void button2_Click(object sender, EventArgs e)
        {
            string nodeName = textBox1.Text;
            int ll = nodeName.Length;
            if (nodeName != null && nodeName.Length > 0)
            {
                //TreeNode表示一个节点对象,treeView1.Nodes.Add(nodeName)的返回值就是现在我们要添加的这个名字为nodeName节点。
                TreeNode node = treeView1.Nodes.Add(nodeName);
            }
            else
            {
                MessageBox.Show("请设置节点名字!");
            }
        }
        //添加子节点
        private void button3_Click(object sender, EventArgs e)
        {
            string nodeName = textBox1.Text;
            //获取用户选中的节点
            TreeNode node = treeView1.SelectedNode;
            if (node != null)
            {
                if (nodeName.Length > 0)
                {
                    node.Nodes.Add(nodeName);
                }
                else
                {
                    MessageBox.Show("请设置子节点的名字!");
                }

            }
            else
            {
                MessageBox.Show("请选中要添加子节点的根节点!");
            }

        }

        //清空所有节点
        private void button1_Click(object sender, EventArgs e)
        {
           DialogResult dr= MessageBox.Show("你确定清空所有节点吗?","警告",MessageBoxButtons.YesNo);
            if(dr.ToString()=="Yes")
            {
                treeView1.Nodes.Clear();
            }
        }

        //删除选中节点
        private void button4_Click(object sender, EventArgs e)
        {
            TreeNode node = treeView1.SelectedNode;
            if (node != null)
            {
                treeView1.SelectedNode.Remove();
            }
            else
            {
                MessageBox.Show("请选择要删除的节点!");
            }
        }
        //展开选中节点
        private void button5_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode != null)
            {
                treeView1.SelectedNode.Expand();//Expand()方法:展开节点树
                //treeView1.SelectedNode.ExpandAll(); //ExpandAll()方法:展开所有后代节点
            }
            else
            {
                MessageBox.Show("请选择要展开的节点!");
            }


        }
        //关闭选中的“展开节点”
        private void button6_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode != null)
            {
                treeView1.SelectedNode.Collapse(); //关闭展开的选中节点
            }
            else
            {
                MessageBox.Show("请选中要关闭的节点!");
            }
        }
    }
}


《自己做一个文件查看器》
<pre class="csharp" name="code">using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TreeView的使用
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            string nodePath = @"D:\jqeuryTest\jqueryTest";
            LoadData(nodePath, treeView1.Nodes);

        }

        //-------------------------------------------------

        //TreeNodeCollection类表示 System.Windows.Forms.TreeNode 对象的集合。即:TreeView节点的集合
        public void LoadData(string path, TreeNodeCollection treeNodeCollection)
        {
            //1.获取指定目录下的所有子目录(直接子目录),并加载
            string[] direPaths = Directory.GetDirectories(path);
            foreach (var direPath in direPaths)
            {
                string direName = Path.GetFileName(direPath);//获取指定路径的文件名,其实这是里获取指定路径的文件夹的名称

                //将具有指定标签文本的新树节点添加到当前树节点集合的末尾。返回值就是添加节点对象
                TreeNode node = treeNodeCollection.Add(direName);

                //最重要的点:使用递归,调用自己,但是这里的参数是v,这个direPath表示指定目录的一条子目录的路径,node.Nodes是当前节点。(具体意思就是添加路径为direPath的子目录到当前节点下。注意,每次自调用v,与node.Nodes的值都不一样哦)
                LoadData(direPath, node.Nodes);
            }



            //-------------------------------------------------


            //2.获取指定目录下的所有子文件(直接子文件)并加载
            string[] files = Directory.GetFiles(path);
            foreach (var file in files) 
            {
                string fileName = Path.GetFileName(file);
                TreeNode node = treeNodeCollection.Add(fileName);

                node.Tag = file; //这一段是什么意思?其实很多控件都有Tag这个属性,这个Tag没有具体的用途,就是用来保存一些用户有需要的信息的。那现在我可以将指定目录下的的子文件的物理路径保存到这个节点Tag属性里面。这样,每个文件节点就都具有一个物理路径             
            };          
            
        }


        //-------------------------------------------------


        //打开这个TreeView的节点添加鼠标双击事件
        private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Tag != null) //在上面我给每个文件节点都设置了Tag属性,它的值是节点的物理路径
            {
                //按照e.Node.Tag这个路径找到文件,并按照Default格式读取他们,赋值给TextBox1控件
                textBox1.Text = File.ReadAllText(e.Node.Tag.ToString(), Encoding.Default);
            }
        }

    }
}

 
  
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值