WinForm——TreeView总结

举报
AI浩 发表于 2021/12/23 01:43:48 2021/12/23
【摘要】 目录   常用属性 CheckBoxes属性 LabelEdit属性 Nodes属性。 ShowLines属性 常用方法 CollapseAll()方法 ExpandAll()方法 GetNodeCount()方法 常用事件 AfterCheck事件。 AfterCollapse事件 AfterEx...

目录

 

常用属性

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);

            }

        }

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/106220689

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。