winform里的treeview能够跟数据绑定吗?我不知道。里面有treeview的用法。是转来的

不过我知道用建立相应的数据库结构,然后用递归的方法可以实现
下面是treeview的用法
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
{
private TreeView treeView1 ;
private Button button1 ;
private Button button2 ;
private Button button3 ;
private MenuItem menuItem2 ;
private MenuItem menuItem3 ;
private MenuItem menuItem4 ;
private ContextMenu contextMenu1 ;
private TextBox textBox1 ;
private Label label1 ;
/// 必需的设计器变量。
private System.ComponentModel.Container components = null ;
public Form1 ( )
{
//初始化窗体中的组件
InitializeComponent ( ) ;
}
/// 清理所有正在使用的资源。
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void InitializeComponent ( )
{
  //初始化代码(略)
}
[ STAThread ]
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
private 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 ;
}
}
}
private 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 ) ;
}
private void treeView1_MouseDown ( object sender ,
MouseEventArgs e )
{
if ( e.Button == MouseButtons.Right )
contextMenu1.Show ( this , new Point ( e.X , e.Y ) ) ;
}
private void button1_Click ( object sender ,
System.EventArgs e )
{
treeView1.SelectedNode.Expand ( ) ;
}
private void menuItem2_Click ( object sender ,
System.EventArgs e )
{
AddChildNode ( ) ;
}
private void menuItem3_Click ( object sender ,
System.EventArgs e )
{
AddParent ( ) ;
}
private void menuItem4_Click ( object sender ,
System.EventArgs e )
{
//判断选定的节点是否存在下一级节点
if ( treeView1.SelectedNode.Nodes.Count == 0 )
//删除节点
treeView1.SelectedNode.Remove ( ) ;
else
MessageBox.Show ( "请先删除此节点中的子节点!" , "提示信
息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
}
private void button2_Click ( object sender ,
System.EventArgs e )
{
//定位根节点
treeView1.SelectedNode = treeView1.Nodes [ 0 ] ;
//展开组件中的所有节点
treeView1.SelectedNode.ExpandAll ( ) ;
}
private void button3_Click ( object sender ,
System.EventArgs e )
{
//定位根节点
treeView1.SelectedNode = treeView1.Nodes [ 0 ] ;
//折叠组件中所有节点
treeView1.SelectedNode.Collapse ( ) ;
}
}
}

时间: 2024-11-03 20:57:37

winform里的treeview能够跟数据绑定吗?我不知道。里面有treeview的用法。是转来的的相关文章

Winform 里面的TreeView节点定位的另外一种方法TreeNode.FromHandle

Winform 里面的TreeView是一种常见的.功能强大的控件,一般的使用大家可能都是比较熟悉的了,估计我们大多数做定位节点的时候,一般都是采用循环查找的方法.如下面的方法所示  foreach (TreeNode node in this.TreeView1.Nodes)   {      if (node.Text == "要找的节点名称")      {         return node;      }       return null;   } 另外还有一种方法是使

C# MVC 如何加载默认checked的kendo treeview, 远程json数据绑定?

问题描述 C# MVC 如何加载默认checked的kendo treeview, 远程json数据绑定? C# MVC 如何加载默认checked的kendo treeview, 远程json数据绑定?json数据含有checked 属性 加载在前台 那么 空点第一次点击或者展开的时候会将后台默认选中的给去掉 或者子节点无法选中只有点击的节点选中.第二次点击又是好的. 如果加 loadOnDemand: false,那么有会因为数据太多 而页面一直未响应.该怎么解决?求大神 $("#Produ

winform里在其他类里不能改变picturebox的图片

问题描述 winform里在其他类里不能改变picturebox的图片 是这样的我在form1里面写了个静态的list,然后我在新建的一个类里面通过索引想改变他的图片然后失败了,求解为什么

net c#-winform里的sendkeys不能在wpf里用

问题描述 winform里的sendkeys不能在wpf里用 winform里的sendkeys不能在wpf里用,请问有其它的相类似的函数吗?求大神支招!

WinForm里编辑HTML,数据库保存,图片

问题描述 在WinForm里编辑HTML后保存到数据库中,但图片保存成一个路径形如:<IMGborder=0hspace=0alt=""align=baselinesrc="C:UsersPublicPicturesSamplePicturesHydrangeas.jpg">到另一台机器上HTML里的图片就显示不出来了,谁有良策? 解决方案 解决方案二:图片路径是本地当然现实不出来,,放在服务器上面,去服务器上面的地址解决方案三:保存到文件夹.....相

datetimepicker-请教各位大神,C#winform里DateTimePicker的一些样式的设置方法....

问题描述 请教各位大神,C#winform里DateTimePicker的一些样式的设置方法.... 问题1:我给控件的日期格式设置了只显示到当前月,怎么才能在点开下拉菜单的时候直接显示月历而不是日历呢问题2:日历菜单最下面的结尾日期,当鼠标移上去的时候总是只有"方框 今天:yyyy年MM月"会有蓝色字体类似链接的效果,怎么让鼠标移上去时""dd日""也显示蓝色字体,或者只有我设定的日期格式里的日期是显示蓝色字体?刚入职的新手没有C币悬赏,在此先

RDLC报表 在WinForm里运行出现 未能加载文件或程序集 Microsoft.ReportViewer.WinForms, Version=11.0.0.0 System.IO.FileNotFoundException

原文:RDLC报表 在WinForm里运行出现 未能加载文件或程序集microsoft.reportviewer.winforms 推荐以下方案二 做一下记录顺便帮助一下遇到问题的朋友. 做RDLC报表在WinForm运行,在VS里面调试引用了"Microsoft.ReportViewer.Common.dll"和"Microsoft.ReportViewer.WinForms.dll"调试运行的时候没有问题. 之后我直接把Bin文件夹下的Debug目录拷到别的机器

WINFORM里根据串口发来的数据在PICBOX里动态显示啊

问题描述 WINFORM里根据串口发来的数据在PICBOX里动态显示啊 解决方案 解决方案二:LZ为什么不放在TextBox上显示解决方案三:串口传过来的数据转换一下,根据值在picbox绘制出相应的点.解决方案四:问题呢,到底哪里不会了千万别告诉我什么都不会解决方案五:根据串口数据,切换picbox的图片呗.解决方案六:串口接收过来,解析,切换picbox

c#-关于winform里的combobox-dropdownlist的问题!!!!

问题描述 关于winform里的combobox-dropdownlist的问题!!!! 我现在想做个下拉框,里面显示各个城市,如北京,上海,广州,深圳,杭州等. 然后在程序里给他们赋值,比如说北京的值是010,上海是021,广州是020........ 然后当有人在界面中选了上海,我在程序中的某个地方就能根据选择使用赋的值021. 请问如何实现!!!!! 解决方案 可以用一个Dictionary将名字和值的对应关系记录下来,然后通过当前的key值找到对应的Value 解决方案二: 或者定义一个

求高手教我怎么在winform里实现滑动星星评分啊!!

问题描述 求高手教我怎么在winform里实现滑动星星评分啊!! 解决方案 解决方案二:一动就画或者换图.哎麻烦.解决方案三:http://www.cnblogs.com/know/archive/2011/04/11/2013093.htmlWinForm"仿js星形评分效果"控件制作经验分享(原创)之配餐系统的开发http://download.csdn.net/detail/superaremeng/364847WINFORM选择题评分系统