C# TreeNode案例详解

 更新时间:2021年08月19日 09:38:35   作者:luckyone906  
这篇文章主要介绍了C# TreeNode案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

添加节点

private void Form1_Load(object sender, EventArgs e)  
{  
    treeView1.LabelEdit = true;//可编辑状态。  
  
    //添加一个节点,这个结点是根节点。  
    TreeNode node = new TreeNode();  
    node.Text = "hope";  
    treeView1.Nodes.Add(node);  
  
    TreeNode node1 = new TreeNode();  
    node1.Text = "hopeone";  
    TreeNode node11 = new TreeNode();  
    node11.Text = "hopeoneone";  
    TreeNode node2 = new TreeNode();  
    node2.Text = "hopetwo";  
  
    node1.Nodes.Add(node11);//在node1下面在添加一个结点。  
  
    node.Nodes.Add(node1);//node下的两个子节点。  
    node.Nodes.Add(node2);  
  
  
    TreeNode t = new TreeNode("basil");//作为根节点。  
    treeView1.Nodes.Add(t);  
    TreeNode t1 = new TreeNode("basilone");  
    t.Nodes.Add(t1);  
    TreeNode t2 = new TreeNode("basiltwo");  
    t.Nodes.Add(t2);  
}  
private void Form1_Load(object sender, EventArgs e)
        {
            treeView1.LabelEdit = true;//可编辑状态。
 
            //添加一个节点,这个结点是根节点。
            TreeNode node = new TreeNode();
            node.Text = "hope";
            treeView1.Nodes.Add(node);
 
            TreeNode node1 = new TreeNode();
            node1.Text = "hopeone";
            TreeNode node11 = new TreeNode();
            node11.Text = "hopeoneone";
            TreeNode node2 = new TreeNode();
            node2.Text = "hopetwo";
 
            node1.Nodes.Add(node11);//在node1下面在添加一个结点。
 
            node.Nodes.Add(node1);//node下的两个子节点。
            node.Nodes.Add(node2);
 
 
            TreeNode t = new TreeNode("basil");//作为根节点。
            treeView1.Nodes.Add(t);
            TreeNode t1 = new TreeNode("basilone");
            t.Nodes.Add(t1);
            TreeNode t2 = new TreeNode("basiltwo");
            t.Nodes.Add(t2);
        }

删除

private void button1_Click(object sender, EventArgs e)  
      {  
          //点击该按钮的时候,会移除选中项  
          treeView1.Nodes.Remove(treeView1.SelectedNode);  
      }
private void button1_Click(object sender, EventArgs e)
        {
            //点击该按钮的时候,会移除选中项
            treeView1.Nodes.Remove(treeView1.SelectedNode);
        }

修改

private void button2_Click(object sender, EventArgs e)  
       {  
           //点击这个按钮的时候,可以修改选中项  
           //注意:在使用这个属性的时候,必须设置treeView1.LabelEdit =true,否则会提示错误。  
           treeView1.SelectedNode.BeginEdit();  
       }
private void button2_Click(object sender, EventArgs e)
        {
            //点击这个按钮的时候,可以修改选中项
            //注意:在使用这个属性的时候,必须设置treeView1.LabelEdit =true,否则会提示错误。
            treeView1.SelectedNode.BeginEdit();
        }

C#中Treeview判断选择的节点并执行不同的方法

Treeview,点击不同的节点(包括父节点和父节点下的子节点)触发不同的事件,执行相应的方法

方法1:

treeView1_AfterSelect事件就是treeView1中节点被选择触发的事件,e.Node指的是当前选中的节点,e.Node.Nodes指的是当前选中节点的子节点集合。

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)  
      {  
          if (e.Action == TreeViewAction.ByMouse)  
          {  
              //当前选中的节点有父节点,并且该父节点在相同级别的父节点中排行第一。  
              if (e.Node.Parent != null && e.Node.Parent.Index == 0)  
              {    
                  //当前选中节点在所有的兄弟节点中排第 一  
                  if(e.Node.Index==0)   
                  {  
                       //调用相应的方法();  
                  }  
              }  
              //表示当前节点没有父节点,并且在兄弟节点中排行第五(由零开始索引)  
              if(e.Node.Parent==null&&e.Node.Index==4)  
              {  
             //调用相应的方法();  
               }  
          }  
      }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Action == TreeViewAction.ByMouse)
            {
                //当前选中的节点有父节点,并且该父节点在相同级别的父节点中排行第一。
                if (e.Node.Parent != null && e.Node.Parent.Index == 0)
                {  
                    //当前选中节点在所有的兄弟节点中排第 一
                    if(e.Node.Index==0) 
                    {
                         //调用相应的方法();
                    }
                }
                //表示当前节点没有父节点,并且在兄弟节点中排行第五(由零开始索引)
                if(e.Node.Parent==null&&e.Node.Index==4)
                {
               //调用相应的方法();
                 }
            }
        }

方法二:

通过节点的Name属性来判断具体是哪个节点被选择,并执行相应的方法(这种方法效率高一些)

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)  
        {  
             if (e.Action == TreeViewAction.ByMouse)  
             {  
                 //说明当前选中节点没有子节点  
                 if(e.Node.Nodes.Count==0)  
                 {  
                      if(e.Node.name="aaa")  
                      {  
                           //执行相应的方法();  
                      }  
                      else if(e.Node.Name="bbb")  
                      {  
                           //执行相应的方法();  
                      }  
                 }  
            }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
         {
              if (e.Action == TreeViewAction.ByMouse)
              {
                  //说明当前选中节点没有子节点
                  if(e.Node.Nodes.Count==0)
                  {
                       if(e.Node.name="aaa")
                       {
                            //执行相应的方法();
                       }
                       else if(e.Node.Name="bbb")
                       {
                            //执行相应的方法();
                       }
                  }
             }

C# 怎么判断TreeView选中的是子节点 ?并且是属于哪个父节?

TreeNode selNode = tree.SelectedNode;  
if (selNode == null)  
{  
    //防止空引用  
    return;  
}  
if (selNode.Parent != null)  
{  
    //为有父亲节点的,  
    TreeNode parentNode = selNode.Parent;//得到父亲节点                
    if (selNode.Nodes.Count == 0)  
    {  
        //为没有子节点,即选中的节点为叶子节点  
    }  
}
TreeNode selNode = tree.SelectedNode;
if (selNode == null)
{
    //防止空引用
    return;
}
if (selNode.Parent != null)
{
    //为有父亲节点的,
    TreeNode parentNode = selNode.Parent;//得到父亲节点              
    if (selNode.Nodes.Count == 0)
    {
        //为没有子节点,即选中的节点为叶子节点
    }
}

C#.Net中TreeView控件右键选择节点问题处理

private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)    
{    
    if(e.Button==MouseButtons.Right)    
    {    
        TreeNode tn=treeView1.GetNodeAt(e.X,e.Y);    
        if(tn!=null)treeView1.SelectedNode = tn;    
    }    
} 
private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)  
{  
    if(e.Button==MouseButtons.Right)  
    {  
        TreeNode tn=treeView1.GetNodeAt(e.X,e.Y);  
        if(tn!=null)treeView1.SelectedNode = tn;  
    }  
}

treeView默认 展开

treeView1.ExpandAll();

默认选中TreeVIew中的一个节点

//先找到你要设置选中的节点
TreeNode tn = treeView1.Nodes[3];
//把要设置的节点给SelectedNode
this.treeView1.SelectedNode = tn;
//this.TreeView1.SelectedNodeIndex="";

TreeView,左键单击节点时可修改节点名称

TreeView本身可支持左键修改名称
在初始化时设置:
TreeView.LabelEdit = true; 
这样应用程序的treeview生成以后就支持单击节点修改。
如果不想左键修改,可在treeView1_MouseDown中设置treeView1.LabelEdit = false;
右键菜单 重命名
treeView1.LabelEdit = true;
treeView.SelectedNode.BeginEdit();

TreeVIew清空

TreeView.Nodes.Clear()

到此这篇关于C# TreeNode案例详解的文章就介绍到这了,更多相关C# TreeNode使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • intellij idea中spring boot properties文件不能自动提示问题解决

    intellij idea中spring boot properties文件不能自动提示问题解决

    这篇文章主要介绍了intellij idea中spring boot properties文件不能自动提示问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • SpringBoot项目中新增脱敏功能的实例代码

    SpringBoot项目中新增脱敏功能的实例代码

    项目中,由于使用端有两个,对于两个端的数据权限并不一样。Web端可以查看所有数据,小程序端只能查看脱敏后的数据,这篇文章主要介绍了SpringBoot项目中新增脱敏功能,需要的朋友可以参考下
    2022-11-11
  • 浅谈Spring boot cache使用和原理

    浅谈Spring boot cache使用和原理

    这篇文章主要介绍了浅谈Spring boot cache使用和原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Flowable数据库表分类及数据字典解析

    Flowable数据库表分类及数据字典解析

    这篇文章主要介绍了Flowable数据库表分类及数据字典解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 以Java代码的方式总结几个典型的内存溢出案例

    以Java代码的方式总结几个典型的内存溢出案例

    作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑.今天分享给大家Java内存溢出的相关案例,希望大家在日常工作中,尽量避免写这些low水平的代码,需要的朋友可以参考下
    2021-06-06
  • 使用springboot+druid双数据源动态配置操作

    使用springboot+druid双数据源动态配置操作

    这篇文章主要介绍了使用springboot+druid双数据源动态配置的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java深入讲解Object类常用方法的使用

    Java深入讲解Object类常用方法的使用

    前面java继承中说到的Object类是java中一个特殊的类,所有的类都是直接或者间接的继承自Object类,即如果某个类没有使用extends关键字则默认是java.lang.Object类的子类,所以所有的类都可以使用Object类中定义的方法,下面介绍Object类的常用方法
    2022-04-04
  • Java通过索引值实现约瑟夫环算法

    Java通过索引值实现约瑟夫环算法

    这篇文章主要介绍了Java通过索引值实现约瑟夫环,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • MyBatis-Plus 之selectMaps、selectObjs、selectCount、selectOne的使用

    MyBatis-Plus 之selectMaps、selectObjs、selectCount、selectO

    本文主要介绍了MyBatis-Plus 之selectMaps、selectObjs、selectCount、selectOne的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 详解Spring中的JavaConfig注解

    详解Spring中的JavaConfig注解

    在开发Java程序,尤其是Java EE应用的时候,总是免不了与各种配置文件打交道。java注解则帮我们使之更整洁,不会配置文件满天飞了。 下面这篇文章主要介绍了Spring中的JavaConfig注解,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02

最新评论