TreeView(竖节点控件)《笔记4》
来源:互联网 发布:国家药品食品数据查询 编辑:程序博客网 时间:2024/05/18 02:04
TreeView随时更新
1、代码添加节点的方法:
TreeNode tn = new TreeNode(“子节点名称”);
TreeNode tn1 = new TreeNode(“父节点名称”,new TreeNode[ ] { tn } );
TreeView.Nodes.Add(tn1);
2、属性:
复选框设置:
TreeView.CheckBoxes = true;
TreeView.SelectedNode.Level 获取节点的深度!可以用来判断节点属于第几节的节点
3、TreeView在CSharp中定义的只有两种模式:
一种是已选中和非选中两种。
TreeView.Checked = true/false;
如果要出现选中父节点,同时选中子节点需要重写TreeVies控件和CheckBox控件。
4、如何在TreeView中加入节点图标:
用存储控件(ImageList)存放需要的图像,在把ImageList赋值给TreeView.ImageList属性中。
Image im = image.FromFile("图像地址");imageList1.Images.AddRange(new Image[]{im}); treeView1.ImageList = this.imageList1;TreeNode tn0 = new TreeNode("子节点");//获取当树节点处于**未选定**状态时所显示的图像列表索引值。tn0.ImageIndex = 0;//获取当树节点处于**选定**状态时所显示的图像列表索引值。tn0.SelectedImageIndex = 0;TreeNode tn1 = new TreeNode("父节点",new TreeNode[]{tn0});tn1.ImageIndex = 0;tn1.SelectedImageIndex = 0;treeView1.Nodes.Add(th1);.......
//选中节点时候触发方法 private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) { SetChildChecked(e.Node); } //根据父节点输入子节点的状态 private void SetChildChecked(TreeNode childNode) { if (childNode.Checked) { //节点选中执行 for (int i = 0; i < childNode.GetNodeCount(false); i++) { TreeNode th = childNode.Nodes[i]; if (th.Checked != true) { th.Checked = true; } } } else { //节点未选中执行 for (int i = 0; i < childNode.GetNodeCount(false); i++) { TreeNode tn = childNode.Nodes[i]; tn.Checked = false; } } }
///以下这段代码为**第三种选择模式**用于补充 /// <summary> /// 根据子节点状态设置父节点的状态 /// </summary> /// <param name="childNode"></param> private void SetParentChecked(TreeNode childNode) { TreeNode parentNode = childNode.Parent; if (!parentNode.Checked && childNode.Checked) { int ichecks = 0; for (int i = 0; i < parentNode.GetNodeCount(false); i++) { TreeNode node = parentNode.Nodes[i]; if (node.Checked) { ichecks++; } } if (ichecks == parentNode.GetNodeCount(false)) { parentNode.Checked = true; if (parentNode.Parent != null) { SetParentChecked(parentNode); } } } else if(parentNode.Checked && !childNode.Checked) { parentNode.Checked = false; } }
/*————————————————
笔记代码如下(本人亲测):
public void ChuShiHuaJieDian() { TreeNode th11 = new TreeNode("一年级");//子树根 TreeNode th12 = new TreeNode("二年级");//子树根 TreeNode th13 = new TreeNode("三年级");//子树根 TreeNode th14 = new TreeNode("四年级");//子树根 TreeNode th15 = new TreeNode("五年级");//子树根 TreeNode th16 = new TreeNode("六年级");//子树根 TreeNode th1 = new TreeNode("小学", new TreeNode[] { th11, th12, th13, th14, th15, th16 });//根树根,根目录包含了子目录 treeView1.Nodes.Add(th1); TreeNode th21 = new TreeNode("七年级"); TreeNode th22 = new TreeNode("八年级"); TreeNode th23 = new TreeNode("九年级"); TreeNode th2 = new TreeNode("中学", new TreeNode[] { th21, th22, th23 }); treeView1.Nodes.Add(th2); TreeNode th34 = new TreeNode("高一"); TreeNode th35 = new TreeNode("高二"); TreeNode th36 = new TreeNode("高三"); TreeNode th3 = new TreeNode("高中", new TreeNode[] { th34, th35, th36 }); treeView1.Nodes.Add(th3); TreeNode th47 = new TreeNode("大一"); TreeNode th48 = new TreeNode("大二"); TreeNode th49 = new TreeNode("大三"); TreeNode th4 = new TreeNode("大学", new TreeNode[] { th47, th48, th49 }); treeView1.Nodes.Add(th4); } private void Form1_Load(object sender, EventArgs e) { ChuShiHuaJieDian(); } private void button1_Click(object sender, EventArgs e)//添加根节点 { if (textBox1.Text != "") { TreeNode tn = new TreeNode(textBox1.Text.Trim()); //声明一个根节点 treeView1.Nodes.Add(tn); //添加 } else { MessageBox.Show("文件夹名称为空,不可创建新的文件夹"); } } private void button2_Click(object sender, EventArgs e)//删除根节点 { TreeNode th = new TreeNode(); th = treeView1.SelectedNode; //声明一个节点,保存已经选中的节点 if (th.Nodes.Count > 0)//查看该节点是否有子节点 { DialogResult dr = MessageBox.Show("当前所选择的文件夹中有子文件夹,是否继续进行删除","删除窗口",MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { th.Remove(); } } } private void button3_Click(object sender, EventArgs e)//无限添加子节点 { TreeNode tn1 = new TreeNode(textBox1.Text);//子节点 //声明一个节点,作为新开辟的节点空间 TreeNode tn = new TreeNode();//根节点 tn = treeView1.SelectedNode; //声明一个节点,保存当前选中的节点 if (tn.Checked == true) { tn = treeView1.SelectedNode.Nodes.Add(tn1.Text); //获得当前选中的节点,“此节点集合中”添加“新的子节点” } } private void button4_Click(object sender, EventArgs e)//无限删除子节点 { TreeNode tn = new TreeNode(); tn = treeView1.SelectedNode; //声明一个节点,获取选中的节点 if (tn != null && tn.Checked == true && tn.Nodes.Count == 0) {//tn不为空并且选定的并且tn没包含有子节点 tn.Remove(); } else { DialogResult dr = MessageBox.Show("当前文件夹中包含文件夹,是否删除", "删除窗口", MessageBoxButtons.YesNo); if(dr == DialogResult.Yes) { tn.Remove(); } } }
个人倾述(不针对任何人):
别为自己的懒惰,找任何理由。
最近总听到有朋友说:命不好,命运是枷锁。
我本人很反感这些,自己不付出努力,总为自己的不成功找借口。即使你命好,别人想给你机会。但我很想问一句:你到底会做什么?你口中所说的自己真那么厉害?那么你现在为何还在抱怨?
只有你自己放弃自己,没有人能放弃你自己。
1 0
- TreeView(竖节点控件)《笔记4》
- TreeView控件节点遍历
- TreeView控件动态增加节点
- TreeView 控件客户端节点选择的代码
- 给TreeView控件添加节点一例
- 递归为TreeView控件添加节点
- 让treeview 控件中的选中节点闪烁
- C# treeview控件部分节点添加checkbox
- c++ builder TreeView控件节点遍历
- C# treeview控件部分节点添加checkbox
- TreeView控件实现选中父节点时全选子节点
- TreeView控件实现选中父节点时全选子节点
- TreeView控件实现选中父节点时全选子节点
- VB.NET实现 TreeView控件查找节点,显示节点
- 树状图 TreeView控件--访问控件的所有节点
- Delphi下Treeview控件基于节点编号的访问
- Microsoft,WEB控件树(TreeView)节点的删除方法.
- TreeView控件节点重命名后没有进入beginEdit的解决方案
- Exchanger
- kinetis之 KV46F150M 的ADC模块使用小结
- Java循环语句之 while · doWhile · for · 多重循环
- Leetcode题解 141. Linked List Cycle
- JDBC
- TreeView(竖节点控件)《笔记4》
- C语言指针的函数运用和数组
- POJ1276 Cash Machine 【解法一】
- ajax、xml、json
- android studio NDK 配置及入门案例
- 处理浏览器的兼容问题之nextSibling
- Leetcode题解 142. Linked List Cycle II
- git修改启动目录和改变项目位置
- hdu5723 最小生成树+DFS(距离和,期望)