目录树加载并绑定右键点击事件

 1 using System.Collections;
 2 using System.Drawing;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Windows.Forms;
 6
 7 namespace menuTreeWITHrightMouseClick
 8 {
 9     public partial class Form1 : Form
10     {
11         string strRootFolderPath = @"D:\CODE";
12         TreeNode rootNode;
13
14         public Form1()
15         {
16             InitializeComponent();
17             rootNode = new TreeNode(strRootFolderPath);
18             BangdingTreeView(rootNode);
19             this.tv_Folders.Nodes.Add(rootNode);
20             this.tv_Folders.CollapseAll();
21             int a = this.tv_Folders.GetNodeCount(true);
22         }
23
24         private void BangdingTreeView(TreeNode tr)
25         {
26             foreach (string strPath in Directory.GetDirectories(tr.Text))
27             {
28                 TreeNode currentNode = new TreeNode(strPath);
29                 GetTreeNodesStatus(tv_Folders.Nodes);
30                 tr.Nodes.Add(currentNode);
31                 //更新TreeView函数
32                 SetTreeNodesStatus(tv_Folders.Nodes);
33                 if (Directory.GetDirectories(strPath).Count() > 0)
34                 {
35                     BangdingTreeView(currentNode);
36                 }
37             }
38         }
39
40         private Hashtable NodesStatus = new Hashtable();
41         private string SelectNodeFullPath = string.Empty;
42
43         private void GetTreeNodesStatus(TreeNodeCollection nodes)
44         {
45             foreach (TreeNode node in nodes)
46             {
47                 if (node.IsExpanded)
48                 {
49                     NodesStatus[node.FullPath] = true;
50                 }
51                 else
52                 {
53                     NodesStatus.Remove(node.FullPath);
54                 }
55                 if (node.IsSelected)
56                 {
57                     SelectNodeFullPath = node.FullPath;
58                 }
59                 GetTreeNodesStatus(node.Nodes);
60             }
61         }
62
63         private void SetTreeNodesStatus(TreeNodeCollection nodes)
64         {
65             foreach (TreeNode node in nodes)
66             {
67                 if (NodesStatus[node.FullPath] != null)
68                 {
69                     node.Expand();
70                 }
71                 if (node.FullPath == SelectNodeFullPath)
72                 {
73                     this.tv_Folders.SelectedNode = node;
74                 }
75                 SetTreeNodesStatus(node.Nodes);
76             }
77         }
78
79         private void tv_Folders_MouseDown(object sender, MouseEventArgs e)
80         {
81             if (e.Button == MouseButtons.Right)//判断点击的是否是右键
82             {
83                 Point ClickPoint = new Point(e.X, e.Y);//获取鼠标点击的坐标
84                 TreeNode CurrentNode = tv_Folders.GetNodeAt(ClickPoint);//在获取的坐标处找节点
85                 if (CurrentNode != null)//判断点击的位置有没有节点
86                 {
87                     CurrentNode.ContextMenuStrip = ctm_rightClickMenus;//给当前获取到的节点属性绑定右键点击事件
88                     string name = tv_Folders.SelectedNode.Text.ToString();//存储节点文本
89                     tv_Folders.SelectedNode = CurrentNode;//把点击获取到的节点设置为选中状态
90                 }
91             }
92         }
93
94         private void tv_Folders_AfterSelect(object sender, TreeViewEventArgs e)
95         {
96
97         }
98     }
99 }

原文地址:https://www.cnblogs.com/palebluestarrysky/p/11146075.html

时间: 2024-10-01 20:13:41

目录树加载并绑定右键点击事件的相关文章

伟景行 citymaker 从入门到精通(2)——工程图层树加载

工程树是指explorer左边这棵树 本例子实现了图层树加载,点击节点切换可视状态 树控件使用easyui的树 html部分 onCheck:treeProjectTreeOnCheck是指树节点的onCheck是js函数treeProjectTreeOnCheck 1 <div data-options="region:'center',fit:true"> 2 <object id="__g" type="application/x-

页面全部加载完毕和页面dom树加载完毕

dom树加载完毕 $(document).ready() //原生写法document.ready = function (callback) {            ///兼容FF,Google            if (document.addEventListener) {                document.addEventListener('DOMContentLoaded', function () {                    document.rem

JavaScript之jQuery-4 jQuery事件(页面加载后执行、事件处理、事件冒泡、事件对象、模拟操作)

一.jQuery 页面加载后执行 代码执行的时机选择 - $(document).ready()方法和 window.onload事件具有相似的功能,但是在执行时机方面是有区别的 - window.onload 事件是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行 - $(document).ready()方法注册的事件处理程序,在DOM完全加载后就可以调用 - 一般来讲, $(document).ready()的执行要优于window.onload事件 - 需要注意的是,

给一个表单提交绑定一个点击事件

如果给一个表单绑定一个点击事件会发生什么事情 <input type="submit" name="button" value="提交内容" class="btn btn-primary" /> (提交快捷键: $(".btn").click(function(){ window.alert("add"); }) 如上面所示的:会先执行点击事件,然后再进行提交,这样能够进行验

Android开发:ListView控件:给Item绑定了点击事件,却点击无效

一.问题引入 ListView控件:给Item绑定了点击事件,却点击无效. 二.解决方案 ListView使用了自定义布局文件,在布局文件中有button等控件时,这些控件获取焦点的级别比listView的item高,所以当点击item时,button等控件会优先获得点击焦点. 解决方法就是在布局文件根元素中添加属性: android:descendantFocusability="blocksDescendants" android:descendantFocusability De

如何使用chrome浏览器进行js调试找出元素绑定的点击事件

大家有没有遇到这样的一个问题,我们在分析一些大型电子商务平台的Web前端脚本时,想找到一个元素绑定的点击事件,并不是那么容易,因为有些前端脚本封装的比较隐蔽,甚至有些加密脚本,用传统的查找元素ID.或者页面源码方法去找,可能最后徒劳无功.下面我来介绍利用chrome浏览器来查找元素绑定的事件. 只需要通过chrome浏览器以下三个功能就可以轻松找到绑定事件了. 1.Sources(源码)2.Event Listener Breakpoints(事件监听断点)3.Call Stack(函数调用栈)

ARM架构下linux设备树加载的方法

引入设备树后bootloader加载DTB方法: 1. 标准方法 将linux kernel放到内存地址为<kernel img addr>的内存中. 将DTB放到地址为<dtb addr>的内存中. 在u-boot下通过下面的命令启动内核: bootm <kernel img addr> – <dtb addr> 2.兼容方法 配置内核CONFIG_ARM_APPENDED_DTB选项,将DTB放到紧跟内核后面的地址. 具体方法如下: 1)将DTB放到内核

修改 docker image 安装目录 (解决加载大image时报错:&quot;no space left on device&quot; )

问题原因:出现此问题一般是 docker 根目录空间不足导致 解决方法:重新指定docker image 安装目录,当然确保你新指定的目录有足够的空间. 方法步骤: ##查看 docker 的根目录 [[email protected] k8s]# docker info | grep -i "docker root dir" WARNING: You're not using the default seccomp profile Docker Root Dir: /var/lib/

angual+mui 双栏上拉加载,微信里面禁用默认事件可用,可以防止浏览器回弹效果

//html 部分 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #2eafa9 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #596972 }