ListView控件
在工具箱上击鼠标右键,选择快捷菜单的Components(部件)项,在控件列表中选择Microsoft Windows Common Controls 5.0控件(Comctl32.ocx),这个控件中包括ListView、TreeView等几个Windows 95特有的控件。
如果使用的是Visual Basic 6.0,则应该选择Microsoft Windows Common Controls 6.0控件。
将 ColumnHeader 对象添加到 ListView 控件的 ColumnHeaders 集合中。
语法
ListView1.ColumnHeaders.Add(index, key, text, width, alignment, icon)
Add 方法的语法包含下面部分:
部分 描述
object 必需的。对象表达式,其值是 ColumnHeaders 集合。
index 可选的。唯一标识对象集合成员的整数。
key 可选的。唯一的字符串表达式,可以用来访问集合的成员。
text 可选的。出现在 ColumnHeader 对象中的字符串。
width 可选的。数值表达式,它使用控件容器的度量单位指定对象的宽度。
alignment 可选的。决定 ColumnHeader 对象中文本对齐方式的整数。关于设置信息,请参阅“请参阅列表中 Alignment 属性的信息。
icon 可选的。Smallicons 图象列表中图象的关键字或索引。
说明 Add 方法返回新插入的 ColumnHeader 对象的引用。
使用 index 参数在 ColumnHeaders 集合的特定位置插入列标头。
当 ColumnHeaders 集合成员可能动态变更时,应使用 Key 属性引用它们,因为任何 ColumnHeader 对象的 Index 属性都可以改变。
示例:
Private Sub Command1_Click()
With ListView1
.ListItems.Clear '清空列表
.ColumnHeaders.Clear '清空列表头
.View = lvwReport '设置列表显示方式
.GridLines = True '显示网络线
.LabelEdit = lvwManual '禁止标签编辑
.FullRowSelect = True '选择整行
End With
With ListView1.ColumnHeaders
.Add , , "ID", 500 '给列表中添加列名
.Add , , "本地 IP", 1500
.Add , , "本地端口", 900
.Add , , "协议", 550
.Add , , "远程 IP", 1500
.Add , , "远程端口", 900
.Add , , "当前状态", 900
.Add , , "连接时间", 900
End With
'-------------------------------------------------------
Dim X
X = ListView1.ListItems.Count + 1
ListView1.ListItems.Add , , X
With ListView1.ListItems(X)
.SubItems(1) = "00:00:00"
.SubItems(2) = "2023-01-01"
.SubItems(3) = "(无)"
End With
'-------------------------------------------------------
ListView1.ListItems.Clear '清空列表
ListView1.ListItems.Add , , "1"
With ListView1.ListItems(1)
.SubItems(1) = "00:00:00"
.SubItems(2) = "2023-12-01"
.SubItems(3) = "(无)"
End With
ListView1.ListItems.Add , , "2"
With ListView1.ListItems(2)
.SubItems(1) = "00:00:01"
.SubItems(2) = "2023-12-01"
.SubItems(3) = "(无)"
End With
'-------------------------------------------------------
ListView1.View = lvwReport '设置显示方式为列表
ListView1.AllowColumnReorder = True '对行进行程序排列,用鼠标进行排列
ListView1.Arrange = lvwAutoLeft '图标横排列
ListView1.Arrange = lvwAutoTop '图标竖排列
ListView1.FlatScrollBar = False '显示滚动条
ListView1.FlatScrollBar = True '隐藏滚动条
ListView1.FullRowSelect = True '选择整行
ListView1.LabelEdit = lvwManual '禁止标签编辑
ListView1.GridLines = True '显示网络线
ListView1.LabelWrap = True '图标可以换行
ListView1.MultiSelect = True '可以选择多个项目
ListView1.PictureAlignment = lvwTopLeft '图片对齐方式是左顶部,其他有右顶部(1)、左底部(2)、右底部(3)、居中(4)、平铺(5)
ListView1.Checkboxes = True '显示复选框
'ListView1.DropHighlight = ListView1: ListItems.Item (2) '显示系统颜色
End Sub
获取当前行数和列数:
MsgBox "行数:" & ListView1.ListItems.Count & "列数:" & ListView1.ColumnHeaders.Count
Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
ListView1.ToolTipText = "行数:" & ListView1.ListItems.Count & "列数:" & ListView1.ColumnHeaders.Count
设置宽度:
ListView1.ColumnHeaders.Add , , "备注" ,1500
当前选中行:
msgbox ListView1.SelectedItem.index
获取复选框的值:
msgbox ListView1.ListItems(1).Checked
删除指定行:
ListView1.ListItems.Remove 1
去掉鼠标左键点击标签编辑:
labeledit属性改为1
读取某行第一列内容:
ListView1.ListItems(i).Text
读取某行第几列内容(不包括第一列):
ListView1.ListItems(Num).SubItems(4)
读取当前选中行第一列内容:
ListView1.ListItems(ListView1.SelectedItem.Index).Text
循环查找读取项目:
Dim i As Integer
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems(i).Text = 4 Then MsgBox ListView1.ListItems(i).Text '第一列
If ListView1.ListItems(i).SubItems(1) = 4 Then MsgBox ListView1.ListItems(i).SubItems(1) '第二列
Next
清空列表头:
ListView1.ColumnHeaders.Clear
清空列表:
ListView1.ListItems.Clear
右键菜单:
Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbRightButton Then PopupMenu CommandLst '按下鼠标右键 显示菜单
End Sub
当前选中判断:
Dim N
If ListView1.ListItems.Count <> 0 Then N = ListView1.SelectedItem.Index Else MsgBox "当前没有任何主机在线!", vbInformation, "警告:": Exit Sub
If N < 1 Then MsgBox "你没有选中任何主机!", vbInformation, "警告:": Exit Sub
VB设置某行为选中/非选中状态:
ListView.ListItems(i).Selected = True '选中第i行
ListView.ListItems(i).Selected = False '选中第i行