C# WinForm TreeListView控件用法初步

348 篇文章 0 订阅
C# WinForm TreeListView控件用法初步

TreeListView是第三方控件,我找到一个vs2003下的源码,升级到vs2010
使用起来没有什么不同。刚刚用了一下,感觉挺不错。分享一下。

1.把TreeListView控件添加到工具箱。
右击工具箱中的常规选项卡->选择项,找到System.Windows.Forms.TreeListView.dll
添加进来。然后就可以像普通控件一样拖一个到窗体。
2.设置属性这里主要设置一下Columns集合与SmallImageList
设置用来显示节点图标。如果不设置SmallImageList属性,无法正常显示。
如果不设置图标的话,图标显示的位置为空白。
CheckBoxs属性可以设置为Recursive可以显示成复选框。
3.通过AddItems()添加小项,
编写BeforeExpand();BeforeCollapse();BeforeLabelEdit();
三个事件的响应函数。就是展开或者折叠时显示哪个图标。
4.附带TreeListView的源码,以备二次开发。


using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;

namespace  TreeListViewApp
{
    
public   partial   class  Form1 : Form
    {
        
public  Form1()
        {
            InitializeComponent();
        }

        
private   void  Form1_Load( object  sender, EventArgs e)
        {
            AddItems();
        }
        
private   void  AddItems()
        {
            
// 第一个参数是要显示的文本,第二个参数是要显示的图标索引。
            TreeListViewItem itemA  =   new  TreeListViewItem( " A " 0 );
            itemA.Expand();
// 展开
            itemA.SubItems.Add( " AA " ); // SubItems相当于同一行的不同列值。
            itemA.SubItems.Add( " BB " ); // 第三列
            
// 二级
            TreeListViewItem itemA0  =   new  TreeListViewItem( " A0 " 1 );
            itemA.Items.Add(itemA0);
            
// 三级
            TreeListViewItem itemA00  =   new  TreeListViewItem( " A00 " 3 );
            itemA0.Items.Add(itemA00);

            treeListView1.Items.Add(itemA);
        }
        
// 折叠事件
         private   void  treeListView1_BeforeCollapse( object  sender, TreeListViewCancelEventArgs e)
        {
            
// 索引1,2分别对应折叠与展开的图标。
             if  (e.Item.ImageIndex  ==   2 ) e.Item.ImageIndex  =   1 ;
        }
        
// 展开事件
         private   void  treeListView1_BeforeExpand( object  sender, TreeListViewCancelEventArgs e)
        {
            
if  (e.Item.ImageIndex  ==   1 ) e.Item.ImageIndex  =   2 ;
        }
        
// 编辑状态
         private   void  treeListView1_BeforeLabelEdit( object  sender, TreeListViewBeforeLabelEditEventArgs e)
        {
            
// 设置LabelEdit属性为True才可激活
             if  (e.Item.ImageIndex  <   1   ||  e.Item.ImageIndex  >   2 ) // 第一级与第三级只可以编辑第一列。
                e.ColumnIndex  =   0 ;
            
if  (e.ColumnIndex  ==   1 ) // 如果是第二列,显示一个下拉框。
            {
                ComboBox combobox 
=   new  ComboBox();
                combobox.Items.AddRange(
new   string [] {  " New value 1 " " New value 2 " " New value 3 "  });
                e.Editor 
=  combobox;
            }
        }
    }
}
复制代码

源码下载:http://files.cnblogs.com/greatverve/TreeListViewApp.rar

程序员的网店: http://shop108042866.taobao.com呵呵

凡事以大气象去面对,优秀是一种习惯。

分类: winForm
标签: treelistview
7
0
(请您对文章做出评价)
« 上一篇: 用c#创建支持多语言的WinForm应用程序
» 下一篇: 六字诀养生法 气功口诀
  
#1楼 2010-10-21 10:11 | 通用C#系统架构  
不错,蛮好的控件。
http://pic.cnblogs.com/face/u35584.jpg
  
#2楼 [ 楼主] 2010-10-21 10:13 | 大气象  
@ 吉日嘎拉 不仅权通用权限
咋有幸被吉哥看到了,呵呵。
http://pic.cnblogs.com/face/u38230.jpg
  
#3楼 2010-10-21 14:32 | 尤鹏飞  
继续努力!大气象!

  
#4楼 2010-10-21 14:32 | 尤鹏飞  
很不错的谢谢楼主分享

  
#5楼 2010-10-21 15:01 | 通用C#系统架构  
这个文章推荐的人不少了,算是很多了。
http://pic.cnblogs.com/face/u35584.jpg
  
#6楼 [ 楼主] 2010-10-21 16:15 | 大气象  
@ 尤鹏飞
鹏飞万里,呵呵。
http://pic.cnblogs.com/face/u38230.jpg
  
#7楼 [ 楼主] 2010-10-21 16:17 | 大气象  
@ 吉日嘎拉 不仅权通用权限
我今天刚刚想DuDu申请开通发首页精华的权限,
我发了精华区,没有看到,是不是需要审核呀?
只有发到候选区了,呵呵,这算不上精华,
估计许多人会需要使用这控件。
http://pic.cnblogs.com/face/u38230.jpg
  
#8楼 2010-10-25 15:55 | 邵锡栋  
继续努力!大气象!

  
#9楼 [ 楼主] 2010-10-26 09:41 | 大气象  
@ 邵锡栋
3q
http://pic.cnblogs.com/face/u38230.jpg
  
#10楼 2010-10-27 23:19 | 鬼神  
继续努力!大气象!
http://pic.cnblogs.com/face/u23620.jpg
  
#11楼 [ 楼主] 2010-10-28 08:34 | 大气象  
@ 鬼神
3q
http://pic.cnblogs.com/face/u38230.jpg
  
#12楼 2011-08-19 09:35 | 王清培  
继续努力!大气象!
http://pic.cnblogs.com/face/u202205.jpg?id=13105403
  
#13楼 2012-06-11 17:44 | llllboy  
LZ 项目刚好用到了这个控件

但是有个需求 是这样的 求大牛们帮忙

具体如下

我们项目是WEB项目,想把这个控件做成列表

点击父单带出子单 但是每个单上面要有URL 跳转到对应的页面(这个怎么实现)

还有问题就是 如果它有子单点击这一行是 就应该是查询它下的子单

如果没有了 点击它就是跳转到对应单据的详细页面

求大牛们帮忙 谢谢啦
http://pic.cnblogs.com/face/327120/20130211222920.png
  
#14楼 [ 楼主] 2012-06-12 10:10 | 大气象  
@ 王丁
web就用js配合实现吧。
http://pic.cnblogs.com/face/u38230.jpg
  
#15楼 2012-06-12 18:39 | llllboy  
LZ 能给个具体思路吗?
http://pic.cnblogs.com/face/327120/20130211222920.png
  
#16楼 2012-07-03 09:48 | 猛龍過江  
继续努力!大气象!
http://pic.cnblogs.com/face/u291155.jpg?id=24095254
  
#17楼 2013-03-11 15:11 | 山头青  
继续努力!大气象!

  
#18楼 2013-12-23 14:51 | sendreams  
太老了,够难看的,都不管审美了?

  
#19楼 2014-04-15 11:35 | 必须好好学习.net  
你好,我想问下,我是按着你的代码自己写了遍,只不过没有加图片,为什么父子节点第一列的数据都是居左,不是像你这样子节点的数据是在父节点之后的,不像你这种效果的。

  
#20楼 3367784 2016/2/27 15:28:57 2016-02-27 15:28 | mmmm_222  
有bug,双击可编辑列之后treelistview Please use OnBeforeLabelEdit(TreeListViewLabelEditEventArgs e)出现异常,请问是啥原因呢


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值