广告
返回顶部
首页 > 资讯 > 后端开发 > Python >C# TreeNode案例详解
  • 309
分享到

C# TreeNode案例详解

2024-04-02 19:04:59 309人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录添加节点删除修改方法1:方法二:添加节点 private void FORM1_Load(object sender, EventArgs e) { tree

添加节点


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使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C# TreeNode案例详解

本文链接: https://www.lsjlt.com/news/132991.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C# TreeNode案例详解
    目录添加节点删除修改方法1:方法二:添加节点 private void Form1_Load(object sender, EventArgs e) { tree...
    99+
    2022-11-12
  • C++ namespace案例详解
    在C++语言编写的程序中,变量和函数等的作用范围是有一定限制的。比如,在函数体中定义的一个临时变量就不可以在函数体外使用。为了解决变量和函数等的作用范围,在C++语言中引入了名空间的...
    99+
    2022-11-12
  • C# Assembly.Load案例详解
     我们在使用C# 语言的Assembly.Load 来加载托管程序集并使用反射功能时,一般需要先通过Assembly.Load(), Assembly.LoadFrom()...
    99+
    2022-11-12
  • C++ TinyXML解析案例详解
    目录TinyXML介绍TinyXML类说明下载和编译简单的例子读取XML写入xmlXML删除操作XML修改操作TinyXML介绍 最近做一个负载均衡的小项目,需要解析xml配置文件,...
    99+
    2022-11-12
  • C# MemoryStream类案例详解
    MemoryStream位于System.IO命名空间,为系统内存提供流式的读写操作。常作为其他流数据交换时的中间对象操作。 MemoryStream类封装一个字节数组,在...
    99+
    2022-11-12
  • C# CultureInfo类案例详解
    c#中的CultureInfo类 CultureInfo类位于System.Globalization命名空间内,这个类和命名空间许多人都不是很熟悉,实际我们在写程序写都经常间接性的...
    99+
    2022-11-12
  • C# PropertyInfo类案例详解
    对一个对象进行属性分析,并得到相应的属性值,并判断属性的默认值以及空值 public class People { public string name...
    99+
    2022-11-12
  • C#的TimeSpan案例详解
    TimeSpan结构:表示一个时间间隔。 它含有以下四个构造函数: TimeSpan(Int64)将 TimeSpan结构的新实例初始化为指定的刻度数。 ...
    99+
    2022-11-12
  • C++ QgraphicsScene类案例详解
    概述 QgraphicsScene类为管理大量的2D图形item提供了一个管理界面,做为item的容器,它配合使用QgraphicsView使用来观察items,例如线,矩形,文本或...
    99+
    2022-11-12
  • C# Directory.GetFiles()函数案例详解
    C#中Directory.GetFiles() 函数的使用 C#中Directory.GetFiles(string path , string searchPattern, Sea...
    99+
    2022-11-12
  • C# PropertyGrid使用案例详解
    1. 只有public的property能显示出来,可以通过BrowsableAttribute来控制是否显示,通过CategoryAttribute设置分类,通过Descripti...
    99+
    2022-11-12
  • C# AttributeUsage使用案例详解
    C# AttributeUsage的使用是如何的呢?首先让我们来了解一下什么是AttributeUsage类它是另外一个预定义特性类,AttributeUsage类的作用就是帮助我们...
    99+
    2022-11-12
  • C++ WideCharToMultiByte()函数案例详解
    函数WideCharToMultiByte() 详解 函数原型: int WideCharToMultiByte( UINT CodePage, DWORD dwFla...
    99+
    2022-11-12
  • C++ cin.get用法案例详解
    与字符串输入一样,有时候使用 cin>> 读取字符也不会按我们想要的结果行事。 例如,因为它会忽略掉所有前导白色空格,所以使用 cin>> 就不可能仅输入一个...
    99+
    2022-11-12
  • C++ move()函数案例详解
    要了解move函数首先弄清左值引用和右值引用。 左值、左值引用、右值、右值引用 1、左值和右值的概念         左值是可以放在赋值号左边...
    99+
    2022-11-12
  • C++ template用法案例详解
    有必要记一下这种一眼看上去就很高级的用法。还是编程不够多。都没用过这个。 相信用过c++的人,即便没用过,也肯定都听说过模板类这个词。嗨不巧了,今天讲的就是模板类。 模板是c++支持...
    99+
    2022-11-12
  • C# log4net使用案例详解
    这边先介绍简单的使用:在控制台输出和写入文件 首先添加log4net的nuget包 然后在app.config中添加配置项==configSections只能有一个,且是config...
    99+
    2022-11-12
  • C# Console.WriteLine()用法案例详解
    以前用Console.WriteLine()的时候就只会用它直接输出string字符串,但后来发现它还有其它在有些场合下会十分方便的输出方法,这篇就记录一下这些方法的使用吧。 代码格...
    99+
    2022-11-12
  • C++ ostream用法案例详解
    概述 在 C++中,ostream表示输出流,英文”output stream“的简称。在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直...
    99+
    2022-11-12
  • C# Request.Form用法案例详解
    在CS文件中获得对应页面中的下拉框DropDownList_sitebranch值可以有以下几种方法获得: siteInfo.FZJGID = DropDownList_site...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作