欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > c# >内容正文

c#

c#treeview控件 -凯发k8官方网

发布时间:2024/10/8 c# 0 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 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 ( ) ;

}

}

}

转载于:https://www.cnblogs.com/hackpig/archive/2010/02/15/1668405.html

总结

以上是凯发k8官方网为你收集整理的c#treeview控件的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图