WinForm——TreeView总结

简介: WinForm——TreeView总结

目录



常用属性


CheckBoxes属性


LabelEdit属性


Nodes属性。


ShowLines属性


常用方法


CollapseAll()方法


ExpandAll()方法


GetNodeCount()方法


常用事件


AfterCheck事件。


AfterCollapse事件


AfterExpand事件


AfterLabelEdit事件


AfterSelect事件。


BeforeCheck事件。


BeforeCollapse事件。


BeforeExpand事件


BeforeLabelEdit事件


BeforeSelect事件


Click事件


实用案例


垂直滚动条出来的时候让它显示在最上面


设置Node的样式


获取鼠标选中的节点。


编辑TreeView节点


父节点选中时,子节点全部选中,同级子节点选中时,父节点选中


常用属性

CheckBoxes属性

该属性表示获取或设置一个值,用以指示是否在试图空间中的树节点旁显示复选框。


例:this.treeView1.CheckBoxes=True;


LabelEdit属性

该属性表示获取或设置一个值,用以指示是否可以编辑树节点的标签文本。如果让treeView1控件不能编辑树节点将LabelEdit设置为false。


Nodes属性。

该属性用于设置TreeView控件中所有节点


this.treeView1.Nodes.Add(“拉芳”);


ShowLines属性

当在同级节点之间或者树系欸但之间有线存在,该值为True,否则为false。默认值为True。


ShowPlusminus属性。该属性表示是否在父节点旁边显示加减号。


例:设置在treeView1控件中的父级节点旁边显示加减号:this.treeView1.ShowPlusminus=true;


常用方法

CollapseAll()方法

此方法折叠所有树节点。当树系欸但折叠时,只显示父节点。


ExpandAll()方法

此方法展开所有树节点,包括子节点。


GetNodeCount()方法

此方法用于获取TreeView控件中的节点总数。


常用事件

AfterCheck事件。

该事件在选中显示在树节点旁边的复选框时发生。


语法:public event TreeViewEventHandler AfterCheck


AfterCollapse事件

该事件在树节点展开时发生。语法:


public event TreeViewEventHadler AfterCollapse


AfterExpand事件

该事件在树节点展开时发生。


语法:public event TreeViewEventHandler AfterExpand


AfterLabelEdit事件

该事件在标记树节点标签文本后发生。


语法:public event TreeViewEventHandler AfterLabelEdit


AfterSelect事件。

该事件在选中树节点后发生。


语法:public event TreeViewEventHandler AfterSelect


BeforeCheck事件。

该事件在中选复选框前发生。


public event TreeViewEventHandler BeforeCheck


BeforeCollapse事件。

该事件在树节点折叠前发生。


语法:public event TreeViewEventHandler BeforeCollapse


BeforeExpand事件

该节点在树节点展开前发生。


语法:public event TreeViewEventHandler BeforeExpand


BeforeLabelEdit事件

该事件在编辑树节点标签前发生。


语法:public event TreeViewEventHandler BeforeLabelEdit


BeforeSelect事件

该事件在选定树节点前发生。


语法:public event TreeViewEventHandler BeforeSelect


Click事件

该事件在单击控件时发生。


语法:public event EventHandler Click。


实用案例

垂直滚动条出来的时候让它显示在最上面

实现:treeView1.TopMode=treeView1.Node[0];


让第一个可见的节点时树里面的第一个节点,滚动条就会在上面了。


设置Node的样式

Node.ForeColor=System.Drawing.Color.Red;


Node.NodeFont=new System.Drawing.Font(“宋体”,9F,System.Drawing.FontStyle.Strikeout,System.Drawing.GraphicsUnit.Point,((byte)(134)));


获取鼠标选中的节点。

TreeView,当用鼠标右键单击或者双击节点时,SelectedNode并不会指向右击的节点;需要在NodeMouseClick和NodeMouseDoubleClick中操作;


private void treeview1_NodeMouseClick(object sender,TreeNodeMouseClickEventArgs e)


{

        TreeNode txSelect=this.treeView1.GetNodeAt(new Point(e.X,e.Y));


        this.treeView1.SelectedNode=txSelect;//也可以写成e.Node;


}


编辑TreeView节点


将LabelEidt设置为true,在树上节点设置右键或者上节点,右键新增重命名选项。


private void ResetToolStripMenuItem_Click(object sender,EventArgs e)


{

        this.menuTree.SelectNode.BeginEdit();


}


private void menuTree_AfterLabelEdit(object sender,NodeLabelEditEventArgs e)


{

        string name=e.Label;


        if (name==null)


        {

                  //更改后的值=e.Node.Text;


}


else


{

        //更改后的值=name;


}


}


注:节点的编辑实在Label上做的更改,在编辑状态后,不做操作时e.Label为空,所以在不更改的情况下要把原来的值重新赋值过来。


父节点选中时,子节点全部选中,同级子节点选中时,父节点选中

 private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)


       {


           if (e.Action == TreeViewAction.ByMouse)


           {


               if (e.Node.Nodes != null)


               {


                   CheckAllChildNode(e.Node);


               }


               CheckParentNode(e.Node);


           }


       }


       private void CheckAllChildNode(TreeNode node)


       {


           foreach (TreeNode childNode in node.Nodes)


           {


               childNode.Checked = node.Checked;


               if (childNode.Nodes != null)


               {


                   CheckAllChildNode(childNode);


               }


           }


       }


       private void CheckParentNode(TreeNode node)


       {


           TreeNode parentNode = node.Parent;


           if (parentNode == null)


           {


               return;


           }


           bool isAllChecked = true;


           foreach (TreeNode nodeOhter in parentNode.Nodes)


           {


               if (nodeOhter.Checked == false)


               {


                   isAllChecked = false;


                   break;


               }


           }


           parentNode.Checked = isAllChecked;


           if (parentNode.Parent != null)


           {


               CheckParentNode(parentNode);


           }


       }


目录
相关文章
|
存储 安全 算法
|
编译器 开发工具 C++
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
2491 0
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
|
1月前
|
人工智能
聊聊 AI 的 token 到底是啥?
Token是AI处理文字的最小单位(如“今天”“天气”),非单字而是“词块”。它决定对话长度、计费成本与响应速度:中文约1.5字/个,英文约0.75词/个。精简表达=更便宜、更快、不超限。(239字)
14459 4
|
缓存 openCL 算法
关于实现Halcon算法加速的基础知识(2)(多核并行/GPU)
关于实现Halcon算法加速的基础知识(多核并行/GPU)
4533 0
关于实现Halcon算法加速的基础知识(2)(多核并行/GPU)
|
5月前
|
安全 开发者 Windows
Win10/11系统永久暂停更新教程,避免频繁更新 Win 系统出问题,一个小工具就能搞定。
Win10/11系统永久暂停更新教程,避免频繁更新 Win 系统出问题,一个小工具就能搞定。
2708 7
|
Java Linux 计算机视觉
全网首发:Could NOT find JNI (missing: JAVA_AWT_INCLUDE_PATH) 解决办法
全网首发:Could NOT find JNI (missing: JAVA_AWT_INCLUDE_PATH) 解决办法
619 0
|
算法
鬼手操控着你的手机?大模型GUI智能体易遭受环境劫持
【9月更文挑战第27天】近年来,随着人工智能技术的发展,多模态大语言模型(MLLM)在图形用户界面(GUI)中广泛应用,提升了交互体验。然而,最新研究《环境警示:多模态智能体易受环境干扰》指出,这些智能体可能因环境干扰而行为失准。作者通过实验展示了即使是强大模型也会受无关因素影响,导致不可靠或不可预测的行为。研究还证实,通过环境注入攻击可进一步加剧此问题。尽管如此,多模态GUI智能体依然潜力巨大,未来需改进感知能力和算法以增强鲁棒性,解决环境干扰问题。论文详细内容见:https://arxiv.org/abs/2408.02544。
314 8
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
1739 0
|
数据安全/隐私保护 C++ Python
Base32系列编码 代码实现过程
Base32系列编码 代码实现过程
417 0
|
安全 Java 数据库
SpringSecurity-4-认证流程源码解析
SpringSecurity-4-认证流程源码解析
275 0

热门文章

最新文章