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;
}
}
}
}