查看: 513  |  回复: 0
  vb6 listview 是哪个部件,用法如何?Microsoft Windows Common Controls 6.0控件
楼主
发表于 2023年12月3日 21:00

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行


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com