• C#TreeView控件


    树形结构如果不是从数据库中取数据填充,也不想使用“TreeNode”编辑器,

    可以使用如下代码,有多少级别都可以,代码如下:

    TreeNode RootNode = new TreeNode();
                TreeNode SonNode1 = new TreeNode("儿子1");
                TreeNode SonNode2 = new TreeNode("儿子2");

                RootNode.Text = "报表统计";

                RootNode.Nodes.Add("节点1");
                RootNode.Nodes.Add("节点2");
                RootNode.Nodes.Add("节点3");

              
                SonNode1.Nodes.Add("节点11");
                SonNode1.Nodes.Add("节点12");

                SonNode2.Nodes.Add("节点21");
                SonNode2.Nodes.Add("节点22");

                RootNode.Nodes.Add(SonNode1);
                RootNode.Nodes.Add(SonNode2);
                treeView1.Nodes.Add(RootNode);

    生成结果如下图所示:

    这只是一个小例子,我们可以添加SonNode1.Nodes.Add(Key,Text),如下

    SonNode1.Nodes.Add("节点11","名称");

    如果还行美观一些则可以加图片

    SonNode1.Nodes.Add("节点11","名称",Imageindex,SelectImageIndex);

    Imageindex:为要显示的图片,SelectImageIndex:为选择该节点显示的图片

    --------------------另一篇----------------

    TreeView组件是由多个类来定义的,TreeView组件是由命名空间"System.Windows.Forms"中的"TreeView"类 来定义的,而其中的节点(即Node),是由命名空间"System.Windows.Forms"中的"TreeNode"来定义的。所以当在程序中创 建一个TreeView对象,其实只是创建了一个可以放置节点的"容器"。而在这个容器中加入一个节点,其实就是加入了从"TreeNode"类中创建的 一个节点对象;同样删除一个节点,也就是删除一个"TreeNode"节点对象。

    一. 本文中介绍的程序设计及运行环境



    (1).微软视窗2000 服务器版

    (2)..Net Framework SDK 正式版



    二. C#操作TreeView组件中的一些常用方法以及具体实现:



    TreeView组件虽然是一个操作起来比较麻烦的组件,但归根到底,可以总结为三种基本操作:加入子节点、加入兄弟节点和删除节点。掌握了这三种常用操作,对于在编程中灵活运用TreeView组件是十分必要的。下面就分别来加以介绍。

    (1).加入子节点:



    所谓子节点,就是处于选定节点的下一级节点。加入子节点的具体过程是:首先要在TreeView组件中定位要加入的子节点的位置,然后创建一个节点对 象,然后利用TreeVeiw类中对节点的加入方法(即:Add ( )方法),加入此节点对象。下面就是在treeView1组件中加入一个子节点的具体代码:







    //首先判断是否选定组件中的位置

    if ( treeView1.SelectedNode == null )

    {

    MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

    }

    else

    {

    //创建一个节点对象,并初始化

    TreeNode tmp ;

    tmp = new TreeNode ( "节点名称" ) ;

    //在TreeView组件中加入子节点

    treeView1.SelectedNode.Nodes.Add ( tmp ) ;

    treeView1.SelectedNode = tmp ;

    treeView1.ExpandAll ( ) ;

    }


    (2).加入兄弟节点:

    所谓兄弟节点,就是在选定的节点的平级的节点。加入兄弟节点的方法和加入子节点的方法基本一致,只是在最后的实现方法上有着略微的区别。加入兄弟节点的 具体步骤,首先也是要确定要加入的兄弟节点所处的位置,接着定义一个节点对象,最后调用TreeView类中对兄弟节点加入的方法,加入此节点对象。加入 兄弟节点和加入子节点的最大区别就在于这最后一步。希望读者能够注意。下面是在TreeView组件加入一个兄弟节点的具体代码:


    //首先判断是否选定组件中节点的位置

    if ( treeView1.SelectedNode == null )

    {

    MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

    }

    else

    {

    //创建一个节点对象,并初始化

    TreeNode tmp ;

    tmp = new TreeNode ( textBox1.Text ) ;

    //在TreeView组件中加入兄弟节点

    treeView1.SelectedNode.Parent.Nodes.Add ( tmp ) ;

    treeView1.ExpandAll ( ) ;

    }


    (3).删除节点:

    删除节点就是删除TreeView组件中选定的节点,删除节点可以是子节点,也可以是兄弟节点,但无论节点的性质如何,必须保证要删除的节点没有下一级 节点,否则必须先删除此节点中的所有下一级节点,然后再删除此节点。删除节点比起上面的二个操作要显得略微简单,具体方法是:首先判断要删除的节点是否存 在下一级节点,如果不存在,就调用TreeView类中的Remove ( )方法,就可以删除节点了。下面是删除TreeView组件中节点的具体代码:

    //判断选定的节点是否存在下一级节点

    if ( treeView1.SelectedNode.Nodes.Count == 0 )

    //删除节点

    treeView1.SelectedNode.Remove ( ) ;

    else

    MessageBox.Show ( "请先删除此节点中的子节点!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;


    (4).TreeView组件的一些其他常用操作:

    其他的一些常用操作比起上面的三种操作,在具体实现上要显得简单许多。这些常用操作无非是,展开所有节点,展开指定的节点、和折叠所有节点。下面就来具体介绍一下:

    < I > .展开所有节点:

    要展开TreeView组件中的所有节点,首先就要把选定的节点指针定位在TreeView组件的根节点上,然后调用选定组件的ExpandAll方法就可以了,下面是具体代码:

    //定位根节点

    treeView1.SelectedNode = treeView1.Nodes [ 0 ] ;

    //展开组件中的所有节点

    treeView1.SelectedNode.ExpandAll ( ) ;

    < II > .展开选定节点的下一级节点:

    由于只是展开下一级节点,所以就没有必要用ExpandAll ( )方法了。展开下一级节点只需要调用Expand ( )方法就可以了,下面是具体的实现代码:

    treeView1.SelectedNode.Expand ( ) ;

    < III > .折叠所有节点:

    折叠所有节点和展开所有节点是一组互操作,具体实现的思路也大致相同,折叠所有节点也是首先要把选定的节点指针定位在根节点上,然后调用选定组件的Collapse ( )就可以了,下面是具体的实现代码:


    //定位根节点

    treeView1.SelectedNode = treeView1.Nodes [ 0 ] ;

    //折叠组件中所有节点

    treeView1.SelectedNode.Collapse ( ) ;


    至此已经把在C#操作TreeView组件的常用方法和一般方法基本都介绍完了。

    三. C#编写的一个完整操作TreeView组件的例子:

    下面是C#编写一个的关于TreeView组件的例子,在这个例子中,结合以上介绍的常用方法和一般方法,基本覆盖来TreeView组件的一些最常用 的操作。譬如可以灵活的程序中的TreeView组件中,进行加入子节点、兄弟节点、删除节点、折叠、展开等操作。其中前三种基本操作是通过程序中弹出菜 单中的功能来实现的,后面操作是通过程序中的按钮来实现的。下面是此程序的代码节略(TreeView.cs):

    using System ;

    using System.Drawing ;

    using System.Collections ;

    using System.ComponentModel ;

    using System.Windows.Forms ;

    using System.Data ;

    namespace 全面掌握TreeView组件的使用方法

    {

    /// Form1 的摘要说明。

    public class Form1 : Form

    {

    ******* TreeView treeView1 ;

    ******* Button button1 ;

    ******* Button button2 ;

    ******* Button button3 ;

    ******* MenuItem menuItem2 ;

    ******* MenuItem menuItem3 ;

    ******* MenuItem menuItem4 ;

    ******* ContextMenu contextMenu1 ;

    ******* TextBox textBox1 ;

    ******* Label label1 ;

    /// 必需的设计器变量。

    ******* System.ComponentModel.Container components = null ;

    public Form1 ( )

    {

    //初始化窗体中的组件

    InitializeComponent ( ) ;

    }

    /// 清理所有正在使用的资源。

    protected override void Dispose ( bool disposing )

    {

    if ( disposing )

    {

    if ( components != null )

    {

    components.Dispose ( ) ;

    }

    }

    base.Dispose ( disposing ) ;

    }

    ******* void InitializeComponent ( )

    {

    //初始化代码(略)

    }

    [ STAThread ]

    static void Main ( )

    {

    Application.Run ( new Form1 ( ) ) ;

    }

    ******* void AddChildNode ( )

    {

    //首先判断是否选定组件中的位置

    if ( treeView1.SelectedNode == null )

    {

    MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

    }

    else

    {

    if ( textBox1.Text != "" )

    {

    //创建一个节点对象,并初始化

    TreeNode tmp ;

    tmp = new TreeNode ( textBox1.Text ) ;

    //在TreeView组件中加入子节点

    treeView1.SelectedNode.Nodes.Add ( tmp ) ;

    treeView1.SelectedNode = tmp ;

    treeView1.ExpandAll ( ) ;

    }

    else

    {

    MessageBox.Show ( "TextBox组件必须填入节点名称!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

    return ;

    }

    }

    }

    ******* void AddParent ( )

    {

    //首先判断是否选定组件中节点的位置

    if ( treeView1.SelectedNode == null )

    {

    MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

    }

    else

    {

    if ( textBox1.Text != "" )

    {

    //创建一个节点对象,并初始化

    TreeNode tmp ;

    tmp = new TreeNode ( textBox1.Text ) ;

    //在TreeView组件中加入兄弟节点

    treeView1.SelectedNode.Parent.Nodes.Add ( tmp ) ;

    treeView1.ExpandAll ( ) ;

    }

    else

    {

    MessageBox.Show ( "TextBox组件必须填入节点名称!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

    return ;

    }

    }

    TreeNode tnode = new TreeNode ( textBox1.Text ) ;

    }

    ******* void treeView1_MouseDown ( object sender , MouseEventArgs e )

    {

    if ( e.Button == MouseButtons.Right )

    contextMenu1.Show ( this , new Point ( e.X , e.Y ) ) ;

    }

    ******* void button1_Click ( object sender , System.EventArgs e )

    {

    treeView1.SelectedNode.Expand ( ) ;

    }

    ******* void menuItem2_Click ( object sender , System.EventArgs e )

    {

    AddChildNode ( ) ;

    }

    ******* void menuItem3_Click ( object sender , System.EventArgs e )

    {

    AddParent ( ) ;

    }

    ******* void menuItem4_Click ( object sender , System.EventArgs e )

    {

    //判断选定的节点是否存在下一级节点

    if ( treeView1.SelectedNode.Nodes.Count == 0 )

    //删除节点

    treeView1.SelectedNode.Remove ( ) ;

    else

    MessageBox.Show ( "请先删除此节点中的子节点!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

    }

    ******* void button2_Click ( object sender , System.EventArgs e )

    {

    //定位根节点

    treeView1.SelectedNode = treeView1.Nodes [ 0 ] ;

    //展开组件中的所有节点

    treeView1.SelectedNode.ExpandAll ( ) ;

    }

    ******* void button3_Click ( object sender , System.EventArgs e )

    {

    //定位根节点

    treeView1.SelectedNode = treeView1.Nodes [ 0 ] ;

    //折叠组件中所有节点

    treeView1.SelectedNode.Collapse ( ) ;

    }

    }

    }
  • 相关阅读:
    PLSQL WEBSERVICES 发布
    WebService开发指南
    来自10位成功IT人士的23条经验教训
    图片格式区别:png8,png24,jpg,jpeg,gif,webp
    当你在工作中失去动力时该怎么办?
    面向对象的反思
    关于前端面试的一些心得
    有什么好的交友软件吗?求推荐
    区块链开发的11种顶级编程语言
    CSRF的几种防御方法的利弊分析
  • 原文地址:https://www.cnblogs.com/hackpig/p/1668405.html
Copyright © 2020-2023  润新知