一、认识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号" 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号", 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 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 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 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 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 31
| Private Sub UserForm_Initialize() Dim ITM As ListItem 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 ListView1.SmallIcons = ImageList1 For i = 1 To 5 Set ITM = ListView1.ListItems.add() ITM.Text = Cells(i, 1) ITM.SubItems(1) = Cells(i, 2) ITM.SubItems(2) = Cells(i, 3) ITM.SmallIcon = i Next i Set ITM = Nothing End Sub
|
代码说明:
SelectedItem属性即是指当前选取的记录