ListView控件完全教程

一、认识listview控件的四种视图:

1、图标视图

特点:可用鼠标操作,使用户能够拖放该对象,并重新排列它们。

2、小图标视图

特点:同时能够显示更多的 ListItem。与图标视图相似,可由用户重新排列对象。

3、列表视图

特点:提供排序的 ListItems 对象视图

4、报表视图

特点:提供排序的视图,通过 SubItems 能够显示更多的信息。

二、listview控件的基本操作:

1、添加列。

第1例:为listview控件添加三列,分别显示为“QQ号”,“呢称”和“来自何处”。

代码:

1
2
3
4
5
6
Private Sub UserForm_Initialize()
ListView1.ColumnHeaders.add , , "QQ号" '添加QQ号列
ListView1.ColumnHeaders.add , , "呢称" '添加呢称列
ListView1.ColumnHeaders.add , , "来自何处" '添加来自何处列
ListView1.View = lvwReport ''设置显示方式为报表格式
End Sub

代码说明:

1、在工作表中用Column表示列。而在Listview控件中,用ColumnHeaders对象来操作列,而添加新的列可以用ColumnHeaders对象的ADD方法。具体如下: ListView1.ColumnHeaders.Add 序号,唯一的字符串标识,列标显示文字,列宽,列的内容对齐方式,所使用的图标序号。

如本例中:ListView1.ColumnHeaders.Add , , “QQ号”

2、Listview控件的View 属性决定着它的显示的方式,具体如下:

1
2
3
4
ListView1.View = lvwIcon '图标显示 
ListView1.View = lvwSmallIcon '小图标显示
ListView1.View = lvwList '列表显示
ListView1.View = lvwReport '报表显示

添加效果:

第2例:为listview控件添加三列,分别显示为“QQ号”,“呢称”和“来自何处”。另三列的列宽各占用ListView1控件总宽度的三分之,第1列为左对齐,第2列为居中对齐,第3列为右对齐。

代码:

1
2
3
4
5
6
7
8
9
10
11
Private Sub UserForm_Initialize() 
ListView1.ColumnHeaders.Add , , "QQ号",
'添加QQ号列,列宽占总宽度的三分之一,左对齐
ListView1.Width / 3, lvwColumnLeft
'添加呢称列,列宽占总宽度的三分之一,居中对齐
ListView1.ColumnHeaders.add , , "呢称", ListView1.Width / 3, lvwColumnCenter
'添加来自何处列,列宽占总宽度的三分之一,右对齐
ListView1.ColumnHeaders.add , , "来自何处", ListView1.Width / 3, lvwColumnRight
'设置显示方式为报表格式
ListView1.View = lvwReport
End Sub

2、添加记录。

第3例:为listview控件添加三列,分别显示为“QQ号”,“呢称”和“来自何处”。并且把如下图所示工作表的中记录添加到listview控件中。效果如下图所示。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub UserForm_Initialize() 
'声明变量类型
Dim ITM As ListItem
'添加QQ号列,列宽占总宽度的三分之一,左对齐
ListView1.ColumnHeaders.add , , "QQ号", ListView1.Width / 3, lvwColumnLeft
'添加呢称列,列宽占总宽度的三分之一,居中对齐
ListView1.ColumnHeaders.add , , "呢称", ListView1.Width / 3, lvwColumnCenter
'添加来自何处列,列宽占总宽度的三分之一,右对齐
ListView1.ColumnHeaders.add , , "来自何处", ListView1.Width / 3, lvwColumnRight
'设置显示方式为报表格式
ListView1.View = lvwReport
'显示表格线 ListView1.Gridlines = True
'设置循环,填充记录
For i = 1 To [A65536].End(xlUp).Row
'添加记录
Set ITM = ListView1.ListItems.add()
'添加记录的行标题(第一列内容)
ITM.Text = Cells(i, 1)
'添加记录的第二列内容
ITM.SubItems(1) = Cells(i, 2)
'添加记录的第三列内容
ITM.SubItems(2) = Cells(i, 3)
Next i
End Sub

代码说明:

1、ListView1的Gridlines属性为True时显示表格线,为False不显示表格线。

2、在ListView控件中,添加记录要通过ListItems集合对象来实现,如本例中Set ITM = ListView1.ListItems.Add()

3、设置第一列的内容是通过text属性来添加,而以后各列的添加则通过SubItems对象来实现。第2列为SubItems(1)第3列为SubItems(2)……….

4、在Listview控件第1列只能左对齐,而不能采取其他对齐方式

三、listview控件的图示显示:

1、listview图标显示格式中的图标设置

第4例:设置一系统登陆窗体,使用listview控件显示用户列表。如下图所示。

制作方法:

在窗体插入以下控件。两个标签控件,两个按钮控件,一个Listview控件和一个ImageList控件。

注:

1、在Listview控件显示的图标需要通过建立和ImageList控件中图标相关联。

2、在VBE编辑器中选取ImageList控件并在属性窗口中单击自定义,在弹出的属性页对话框的Images选项卡中插入ICO图示。方法是单击Insert picture按钮插入图标文件。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub UserForm_Initialize() 
'设置控件显示方式为图标显示
ListView1.View = lvwIcon
'建立和 ImageList1控件的关联
ListView1.Icons = ImageList1
'添加操作员张静
ListView1.ListItems.add , , "张静", 1
'添加操作员王枫
ListView1.ListItems.add , , "王枫", 1
'添加操作员刘楠
ListView1.ListItems.add , , "刘楠", 1
'添加操作员文生
ListView1.ListItems.add , , "文生", 1
'添加操作员赵西城
ListView1.ListItems.add , , "赵西城", 1
'添加操作员吴云
ListView1.ListItems.add , , "吴云", 1
End Sub

代码说明:

ListView1.ListItems.Add , , “吴云”, 1 中的1是指在IImageList1控件中图片序号。

2、listview报表显示格式中的图标设置

第5例:为listview控件添加三列,分别显示为“QQ号”,“呢称”和“来自何处”。并且把如下图所示工作表的中记录添加到listview控件中,并且在每行前添加ImageList1中的图示。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub UserForm_Initialize()
'声明变量类型
Dim ITM As ListItem
'添加QQ号列,列宽占总宽度的三分之一,左对齐
ListView1.ColumnHeaders.add , , "QQ号", ListView1.Width / 3, lvwColumnLeft
'添加呢称列,列宽占总宽度的三分之一,居中对齐
ListView1.ColumnHeaders.add , , "呢称", ListView1.Width / 3, lvwColumnCenter
'添加来自何处列,列宽占总宽度的三分之一,右对齐
ListView1.ColumnHeaders.add , , "来自何处", ListView1.Width / 3, lvwColumnRight
'设置显示方式为报表格式
ListView1.View = lvwReport
'显示表格线
ListView1.Gridlines = True
'设置循环,填充记录
For i = 1 To [A65536].End(xlUp).Row
'添加记录
set ITM = ListView1.ListItems.add()
'添加记录的行标题(第一列内容)
ITM.Text = Cells(i, 1)
'添加记录的第二列内容
ITM.SubItems(1) = Cells(i, 2)
'添加记录的第三列内容
ITM.SubItems(2) = Cells(i, 3)
Next i
End Sub

代码说明:

由以上两个例可以看出,在图标显示方式中要利用Icons 属性建和和ImageList1的关联,而在报表格式中则使用SmallIcons 属性建立和ImageList1控件的关联。

listview**控件的内容输出:**

1、单条记录输出 第6例:如下图所示,当双击Listview1时,会把当前记录填充到A~C列的单元格中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub UserForm_Initialize()
'声明变量类型
Dim ITM As ListItem
'添加QQ号列,列宽占总宽度的三分之一,左对齐
ListView1.ColumnHeaders.add , , "QQ号", ListView1.Width / 3, lvwColumnLeft
'添加呢称列,列宽占总宽度的三分之一,居中对齐
ListView1.ColumnHeaders.add , , "呢称", ListView1.Width / 3, lvwColumnCenter
'添加来自何处列,列宽占总宽度的三分之一,右对齐
ListView1.ColumnHeaders.add , , "来自何处", ListView1.Width / 3, lvwColumnRight
'设置显示方式为报表格式
ListView1.View = lvwReport
'显示表格线
ListView1.Gridlines = True
'建立控件和ImageList1关联
ListView1.SmallIcons = ImageList1
'设置循环
For i = 1 To 5
'添加记录
Set ITM = ListView1.ListItems.add()
'添加第1列内容
ITM.Text = Cells(i, 1)
'添加第2列内容
ITM.SubItems(1) = Cells(i, 2)
'添加第3列内容
ITM.SubItems(2) = Cells(i, 3)
'设置添加的记录图标为ImageList1中序号为i的图标.
ITM.SmallIcon = i
Next i
Set ITM = Nothing
End Sub

代码说明:

SelectedItem属性即是指当前选取的记录