分享

VBListView控件各种操作详解

 fjlhl 2021-09-08
Private Sub Form_Load()  
    'ListView1.SmallIcons = ImageList1.Object '把ImageList1图标列表控件绑定到 ListView1列表控件中来。      
    ListView1.ListItems.Clear               '清空列表  
    ListView1.ColumnHeaders.Clear           '清空列表头  
    ListView1.View = lvwReport              '设置列表显示方式  
    ListView1.GridLines = True              '显示网络线  
    ListView1.LabelEdit = lvwManual         '禁止标签编辑  
    ListView1.FullRowSelect = True          '选择整行  
  
    ListView1.ColumnHeaders.Add , , "ID", 500 '给列表中添加列名  
    ListView1.ColumnHeaders.Add , , "本地 IP", 1500  
    ListView1.ColumnHeaders.Add , , "本地端口", 1200  
    ListView1.ColumnHeaders.Add , , "协议", 550  
    ListView1.ColumnHeaders.Add , , "远程 IP", 1500  
    ListView1.ColumnHeaders.Add , , "远程端口", 900  
    ListView1.ColumnHeaders.Add , , "当前状态", 900  
    ListView1.ColumnHeaders.Add , , "连接时间", 900  
    '-------------------------------------------------------  
    Dim X  
    X = ListView1.ListItems.Count + 1  
    ListView1.ListItems.Add , , X  
    ListView1.ListItems(X).SubItems(1) = "00:00:00"  
    ListView1.ListItems(X).SubItems(2) = "2008-01-01"  
    ListView1.ListItems(X).SubItems(3) = "(无)"  
    '-------------------------------------------------------  
    ListView1.ListItems.Clear               '清空列表  
    ListView1.ListItems.Add , , "1"  
    'ListView1.ListItems.Add , , "1", , 1   '添加图标 后面那个1是ImageList1控件中的图标索引号  
    ListView1.ListItems(1).SubItems(1) = "00:00:00"  
    ListView1.ListItems(1).SubItems(2) = "2008-01-01"  
    ListView1.ListItems(1).SubItems(3) = "(无)"  
  
    ListView1.ListItems.Add , , "2"  
    ListView1.ListItems(2).SubItems(1) = "00:00:01"  
    ListView1.ListItems(2).SubItems(2) = "2008-01-01"  
    ListView1.ListItems(2).SubItems(3) = "(无)"  
    '-------------------------------------------------------  
    '下列的属性也可以单击控件右键->属性进行设置。  
    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  

VBListView控件各种操作详解


常用操作:
获取当前行数和列数:

 

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
End Sub
设置宽度:

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 i
清空列表头:

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行
设置ListView  item项颜色

ListView1.ListItems(i).ForeColor = vbRed
ListView1.ListItems(i).ListSubItems.Item(1).ForeColor = vbRed
ListView1.ListItems(i).ListSubItems.Item(2).ForeColor = vbRed
 
 
 
----------------------------------------------------------
 
 
什么是ListView控件
VB高级控件,高级之处在于它使用了对象的方式组织内容。
要使用ListView控件,需要加入组件:
Microsoft Windows Common Controls 6.0
Windows资源管理器的右半部分,就是一个ListView控件

作用
列出并列关系的对象及对象属性。

ListView控件的对象层次结构
ListView -整个控件
ColumnHeaders -标题行
ColumnHeader -标题列
ListItems -对象行集合
ListItem -对象行
ListSubItems -对象属性集合
ListSubItem -对象属性
注意:SubItems和ListSubItems的区别:SubItems是一个String数组;ListSubItems是一个集合。

属性
View:设置ListView的外观
Sorted:设置ListView中的对象集合是否排序。
SortKey:设置以第几项排序。从零开始。
SelectedItem:返回选中的对象的引用。

事件
AfterLabelEdit:编辑ListItem对象的标签时被触发。
BeforeLabelEdit:编辑ListItem对象的标签后出发。
ColumnClick:单击列标题时触发。参数中可以获得被单击的列对象。通常用于排序。
ItemClick:单击某行或某ListItem时触发。参数中可以获得被单击的ListItem对象。

方法
FindItem:搜索ListItem对象。
参数:
string:搜索字符串。
value:在ListItem的哪部分中搜索(LvwText、LvwSubItem、LvwTag);index:开始搜索的位置。
match:匹配方式。
HitTest:检索位于特定坐标处的ListItem对象。
 

 

--------------------------------------------------------

 

 

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Const LVM_FIRST = &H1000
Private Const LVM_SETWORKAREA = (LVM_FIRST + 65)
Private Const LVM_SETICONSPACING = (LVM_FIRST + 53)

Private Sub Form_Load()
Dim Rects(0) As RECT
With ListView1
Set .SmallIcons = ImageList1
Set .Icons = ImageList1
.View = lvwIcon
.ListItems.Add , , "123", 1, 1
.ListItems.Add , , "456", 1, 1
.Arrange = lvwAutoTop
End With
With Rects(0)
.Left = -100
.Top = 0
.Right = ListView1.Width / Screen.TwipsPerPixelX
.Bottom = ListView1.Height / Screen.TwipsPerPixelX
End With
'下面这句用来减小左边距
SendMessage ListView1.hwnd, LVM_SETWORKAREA, 1, Rects(0)
'下面这句用来减小ListItem之间的距离
SendMessage ListView1.hwnd, LVM_SETICONSPACING, 0, ByVal 32 * &H10000 + 32
End Sub

 

 

https://zhidao.baidu.com/question/137095220.html?qbl=relate_question_1&word=VB listview����ͼ��

这段代码就是listview控件设置图标的,网上很多不是真正要指导别人的,不是说的太笼统要不就是论坛里搞笑的一问,然后就一堆乱答,后面楼主来了一句"自己已经解决了,谢谢".这种人纯粹是有困难找别人,困难解决不管别人的感觉,当初你不知道你死去活来问别人,当自己知道就不共享知识给别人,自私的很呀!

 

With ListView1

先设置 smallicons,icons 两个数据项的数据源(有点像设置数据库的数据源!)
Set .SmallIcons = ImageList1
Set .Icons = ImageList1

'lvwicon,lvwAutoTop都listview属性常量.简单理解就是配置属性参数,指定样式.
.View = lvwIcon

'下面是配置显示项的文本及图标,下面 "123"是显示文本, "1,1"就是Imagelist1的图标索引Index,或关键字Key
,.ListItems.Add , , "123", 1, 1
.ListItems.Add , , "456", 1, 1
.Arrange = lvwAutoTop
End With

 

上面代码就直观让你明白如何设置listview控件的图标.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多