您的位置:首页 > 编程语言 > C#

C# WinForm TreeListView控件用法初步

2016-05-11 13:56 701 查看
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

好文要顶
关注我
收藏该文联系我  

 
大气象
关注 - 13
粉丝 - 652

+加关注

7
0

(请您对文章做出评价)

«
上一篇:用c#创建支持多语言的WinForm应用程序
»
下一篇:六字诀养生法 气功口诀

发表评论

  
#1楼2010-10-21
10:11 |
通用C#系统架构
 

不错,蛮好的控件。

支持(0)反对(0) http://pic.cnblogs.com/face/u35584.jpg
  
#2楼[楼主]2010-10-21
10:13 |
大气象
 

@ 吉日嘎拉 不仅权通用权限

咋有幸被吉哥看到了,呵呵。
支持(0)反对(0) http://pic.cnblogs.com/face/u38230.jpg
  
#3楼2010-10-21
14:32 |
尤鹏飞
 

继续努力!大气象!
支持(0)反对(0)

  
#4楼2010-10-21
14:32 |
尤鹏飞
 

很不错的谢谢楼主分享
支持(0)反对(0)

  
#5楼2010-10-21
15:01 |
通用C#系统架构
 

这个文章推荐的人不少了,算是很多了。

支持(0)反对(0) http://pic.cnblogs.com/face/u35584.jpg
  
#6楼[楼主]2010-10-21
16:15 |
大气象
 

@ 尤鹏飞

鹏飞万里,呵呵。
支持(0)反对(0) http://pic.cnblogs.com/face/u38230.jpg
  
#7楼[楼主]2010-10-21
16:17 |
大气象
 

@ 吉日嘎拉 不仅权通用权限

我今天刚刚想DuDu申请开通发首页精华的权限,

我发了精华区,没有看到,是不是需要审核呀?

只有发到候选区了,呵呵,这算不上精华,

估计许多人会需要使用这控件。
支持(0)反对(0) http://pic.cnblogs.com/face/u38230.jpg
  
#8楼2010-10-25
15:55 |
邵锡栋
 

继续努力!大气象!
支持(0)反对(0)

  
#9楼[楼主]2010-10-26
09:41 |
大气象
 

@ 邵锡栋

3q
支持(0)反对(0) http://pic.cnblogs.com/face/u38230.jpg
  
#10楼2010-10-27
23:19 |
鬼神
 

继续努力!大气象!
支持(0)反对(0) http://pic.cnblogs.com/face/u23620.jpg
  
#11楼[楼主]2010-10-28
08:34 |
大气象
 

@ 鬼神

3q
支持(0)反对(0) http://pic.cnblogs.com/face/u38230.jpg
  
#12楼2011-08-19
09:35 |
王清培
 

继续努力!大气象!
支持(0)反对(0) http://pic.cnblogs.com/face/u202205.jpg?id=13105403
  
#13楼2012-06-11
17:44 |
llllboy
 

LZ 项目刚好用到了这个控件

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

具体如下

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

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

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

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

求大牛们帮忙 谢谢啦
支持(0)反对(0) http://pic.cnblogs.com/face/327120/20130211222920.png
  
#14楼[楼主]2012-06-12
10:10 |
大气象
 

@ 王丁

web就用js配合实现吧。
支持(0)反对(0) http://pic.cnblogs.com/face/u38230.jpg
  
#15楼2012-06-12
18:39 |
llllboy
 

LZ 能给个具体思路吗?
支持(0)反对(0) http://pic.cnblogs.com/face/327120/20130211222920.png
  
#16楼2012-07-03
09:48 |
猛龍過江
 

继续努力!大气象!
支持(0)反对(0) http://pic.cnblogs.com/face/u291155.jpg?id=24095254
  
#17楼2013-03-11
15:11 |
山头青
 

继续努力!大气象!
支持(0)反对(0)

  
#18楼2013-12-23
14:51 |
sendreams
 

太老了,够难看的,都不管审美了?
支持(0)反对(0)

  
#19楼2014-04-15
11:35 |
必须好好学习.net
 

你好,我想问下,我是按着你的代码自己写了遍,只不过没有加图片,为什么父子节点第一列的数据都是居左,不是像你这样子节点的数据是在父节点之后的,不像你这种效果的。
支持(0)反对(0)

  
#20楼33677842016/2/27
15:28:57 2016-02-27 15:28 |
mmmm_222
 

有bug,双击可编辑列之后treelistview Please use OnBeforeLabelEdit(TreeListViewLabelEditEventArgs e)出现异常,请问是啥原因呢
支持(0)反对(0)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: