服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C# TreeNode案例详解

C# TreeNode案例详解

2021-11-24 13:27luckyone906 C#

这篇文章主要介绍了C# TreeNode案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

添加节点

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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); 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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);
        }

删除

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

修改

?
1
2
3
4
5
6
private void button2_Click(object sender, EventArgs e) 
       
           //点击这个按钮的时候,可以修改选中项 
           //注意:在使用这个属性的时候,必须设置treeView1.LabelEdit =true,否则会提示错误。 
           treeView1.SelectedNode.BeginEdit(); 
       }
?
1
2
3
4
5
6
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指的是当前选中节点的子节点集合。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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) 
              
             //调用相应的方法(); 
               
          
      }
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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属性来判断具体是哪个节点被选择,并执行相应的方法(这种方法效率高一些)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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"
                      
                           //执行相应的方法(); 
                      
                 
            }
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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选中的是子节点 ?并且是属于哪个父节?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TreeNode selNode = tree.SelectedNode; 
if (selNode == null
    //防止空引用 
    return
if (selNode.Parent != null
    //为有父亲节点的, 
    TreeNode parentNode = selNode.Parent;//得到父亲节点               
    if (selNode.Nodes.Count == 0) 
    
        //为没有子节点,即选中的节点为叶子节点 
    
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TreeNode selNode = tree.SelectedNode;
if (selNode == null)
{
    //防止空引用
    return;
}
if (selNode.Parent != null)
{
    //为有父亲节点的,
    TreeNode parentNode = selNode.Parent;//得到父亲节点             
    if (selNode.Nodes.Count == 0)
    {
        //为没有子节点,即选中的节点为叶子节点
    }
}

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

?
1
2
3
4
5
6
7
8
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;   
    }   
}
?
1
2
3
4
5
6
7
8
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默认 展开

?
1
treeView1.ExpandAll();

默认选中TreeVIew中的一个节点

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

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

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

TreeVIew清空

?
1
TreeView.Nodes.Clear()

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

原文链接:https://blog.csdn.net/u011555996/article/details/53301024

延伸 · 阅读

精彩推荐
  • C#如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

    如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

    这篇文章主要给大家介绍了关于如何使用C#将Tensorflow训练的.pb文件用在生产环境的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴...

    bbird201811792022-03-05
  • C#深入理解C#的数组

    深入理解C#的数组

    本篇文章主要介绍了C#的数组,数组是一种数据结构,详细的介绍了数组的声明和访问等,有兴趣的可以了解一下。...

    佳园9492021-12-10
  • C#C#设计模式之Strategy策略模式解决007大破密码危机问题示例

    C#设计模式之Strategy策略模式解决007大破密码危机问题示例

    这篇文章主要介绍了C#设计模式之Strategy策略模式解决007大破密码危机问题,简单描述了策略模式的定义并结合加密解密算法实例分析了C#策略模式的具体使用...

    GhostRider10972022-01-21
  • C#VS2012 程序打包部署图文详解

    VS2012 程序打包部署图文详解

    VS2012虽然没有集成打包工具,但它为我们提供了下载的端口,需要我们手动安装一个插件InstallShield。网上有很多第三方的打包工具,但为什么偏要使用微软...

    张信秀7712021-12-15
  • C#SQLite在C#中的安装与操作技巧

    SQLite在C#中的安装与操作技巧

    SQLite,是一款轻型的数据库,用于本地的数据储存。其优点有很多,下面通过本文给大家介绍SQLite在C#中的安装与操作技巧,感兴趣的的朋友参考下吧...

    蓝曈魅11162022-01-20
  • C#利用C#实现网络爬虫

    利用C#实现网络爬虫

    这篇文章主要介绍了利用C#实现网络爬虫,完整的介绍了C#实现网络爬虫详细过程,感兴趣的小伙伴们可以参考一下...

    C#教程网11852021-11-16
  • C#三十分钟快速掌握C# 6.0知识点

    三十分钟快速掌握C# 6.0知识点

    这篇文章主要介绍了C# 6.0的相关知识点,文中介绍的非常详细,通过这篇文字可以让大家在三十分钟内快速的掌握C# 6.0,需要的朋友可以参考借鉴,下面来...

    雨夜潇湘8272021-12-28
  • C#C#微信公众号与订阅号接口开发示例代码

    C#微信公众号与订阅号接口开发示例代码

    这篇文章主要介绍了C#微信公众号与订阅号接口开发示例代码,结合实例形式简单分析了C#针对微信接口的调用与处理技巧,需要的朋友可以参考下...

    smartsmile20127762021-11-25