加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB之ListView控件详解

(2019-10-17 16:07:39)
标签:

vb

listview

分类: 程序设计_VB

https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif

复制代码

Private Sub Command1_Click()            '命令按钮
    ListView1.View lvwReport          '设置ListView控件中ListItem对象的外观形式为报表,其值为3
    ListView1.ColumnHeaders.Clear       '清除原有的列标题
    With ListView1.ColumnHeaders        '添加新的列标题
        .Add ""10
        .Add 
"第一列"1000         '第一列标题,标题内容为第一列,列宽为1000
        .Add "第二列"1000         '第二列标题,标题内容为第二列,列宽为1000
    End With
    
    ListView1.ListItems.Clear           
'清除原有的记录内容
    With ListView1.ListItems.Add        '添加新记录
        .SubItems(11                '第一列内容
        .SubItems(22                '第二列内容
    End With
End Sub

复制代码

Private Sub Form_Load()

    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(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

VB之ListView控件详解

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

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 ToListView1.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

 

https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif

复制代码

           常用属性:
             View
设置或返回控件的视图类型
             
 说明
             
1-LvwIcon 图标类型
             
2-LvwSmallIcon 小图标类型
             
3-LvwList 列表类型
             
4-LvwReport 报表类型

             Arrange 
设置后返回控件的图标排列方式(在图标视图下有效)
             
 说明
             
1-LvwNone 不排列
             
2-LvwAutoLeft 自动靠右排列
             
3-LvwAutoTop 自动靠左排列

             Icons
 SmallIcons ColumnHeaderIcons属性
             Icons
指定图标视图时的图标与ImageList的绑定
             SmallIcons
 ColumnHeaderIcons指定列表视图时的图标与ImageList的绑定

             PICTURE
PictureAlignment属性
             
分别指定ListView控件的背景图片和布局方式

             ListItems(Index) 
属性
             ListItems 
属性是ListView控件中列表项的集合。Index用于指定列表项集合中的一个对象,
             
我们可以把这个对象看作对一行的引用
             ListItems
集合的属性
             
1Text 设置或返回显示文本
             
2key 关键字
             
3index 索引编号
             
4icon smallicon 不同视图时显示单元格的图标 
             
5checked checkboxes 打√
             
6selected 使处于选定状态
             
7ListSubitemsindex 集合 我们可以把这个集合看作对这行中单元格的引用
             Text 
设置或返回单元格显示的内容

             Reporticon 
设置单元格的图标
             
8 Subitems(index) 设置或返回单元格文本 == ListSubitemsindex.text


             ColumnHeaders(index) 
属性
             ColumnHeaders 
属性是ListView控件中列标头的集合
             
1text 显示标题文本
             
2key
             
3index
             
4icon 指定标题图标
             
5alignment 指定index列的对齐方式 (注意:第一列也就是列表项不能指定)
             
6position 返回当前列的索引
             
7subitemindex 返回指定列的listsubitem索引
             TextBackgroud 
属性
             
决定text的背景是透明还是ListView的背景色
             
 
0 lvwTransparent 透明
             
1 lvw 不透明(用listview的背景色)
             Ghosted 
属性 logic 
             
决定是否虚状
             HideColumnHeaders 
属性
             
隐藏表头
             LabelWrap 
属性
             
标签转行 View.LargeIcon  View.SmallIcon 时才使用该属性
             FullRowSelect 
             
整行显示
             HotTracking
             
热点追踪 鼠标指针自动调整为手型
             HoverSelection 
属性
             
自动聚焦 鼠标指针自动调整为手型
             AllowColumnReorder
属性 
             
值设置.t.时,用户可以用鼠标选中1列拖至其他地方进行重新排列
             Sorted
属性 

             
当值为.t.时,列表按字母排序

             
常用方法: 
             ListItems.add(index,key,text,icon,smallicon)
             
listitems添加一列表项。
             Index 
插入列表项的编号
             Key 
插入列表项的关键字
             Text 
插入列表项的文本
             Icon 
当为图标视图时要求显示的图标
             Smallicon 
当为小图标视图时要求显示的图标

             Clear 
             
清除listitems集合中所有的列表项

             Remove
清除选定行 
             L1=thisform.view1 
             L1.listitems.remove(L1.selectedItem.index)
             AllowColumnReorder
属性 
             
值设置.t.时,用户可以用鼠标选中1列拖至其他地方进行重新排列

             
常用事件:
             AfterLabelEdit
             
编辑当前选择的列表对象之后发生

             BeforeLabelEdit
             
编辑当前选择的列表对象之前发生

             ItemClick 
             
单击某一列表对象时发生 
             
参数 item 对当前列表项的引用
             
事件 
             AfterLabelEdit
:编辑ListItem对象的标签时被触发。 
             BeforeLabelEdit
:编辑ListItem对象的标签后出发。 
             ColumnClick
:单击列标题时触发。参数中可以获得被单击的列对象。通常用于排序。 
             ItemClick
:单击某行或某ListItem时触发。参数中可以获得被单击的ListItem对象。
            
方法 
             FindItem
:搜索ListItem对象。 
             
参数: 
             
string:搜索字符串。 
             value
:在ListItem的哪部分中搜索(LvwTextLvwSubItemLvwTag);index:开始搜索的位置。 
             match
:匹配方式。 
             HitTest
:检索位于特定坐标处的ListItem对象。
             vb 
中的实例
             
Private Sub Form_load() 
             
'确保ListView控件的view属性为报表视图。 
             ListView1.View=lvwReport 
             
'添加三列。 
             ListView1.ColumnHeaders.Add,"Name","姓名" 
             ListView1.ColumnHeaders.Add,
"Sex","性别" 
             ListView1.ColumnHeaders.Add,
"Age","年龄" 
             
'向控件添加ListItem对象。 
             Dim itmX As ListItem 
             
'添加column1的名称。 
             Set itmX=ListView1.ListItems.Add(1,"ZL","张力"
             
'使用SubItemIndexSubItem与正确的ColumnHeader关联。使用关键字("Sex")指定正确的ColumnHeader 

             itmX.SubItems(ListView1.ColumnHeaders(
"Sex").SubItemIndex)="" 
             
'使用ColumnHeader关键字将SubItems字符串与 
             '正确的ColumnHeader关联。 
             itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="19" 
             
Set itmX=ListView1.ListItems.Add(1,"LF","李芳"
             itmX.SubItems(ListView1.ColumnHeaders(
"Sex").SubItemIndex)="" 
             itmX.SubItems(ListView1.ColumnHeaders(
"Age").SubItemIndex)="22" 

            
Set itmX=ListView1.ListItems.Add(1,"WW","王伟"
             itmX.SubItems(ListView1.ColumnHeaders(
"Sex").SubItemIndex)="" 
             itmX.SubItems(ListView1.ColumnHeaders(
"Age").SubItemIndex)="24" 
             
End Sub
             
Private Sub ListView1_ColumnClick(ByVal ColumnHeader   As 
             ComctlLib.ColumnHeader) 
             
Select Case ColumnHeader.Key 
             
Case "Sex":ListView1.SortKey=1 
             ListView1.SortOrder=lvwAscending 
             ListView1.Sorted=
True 
             
Case "Age":ListView1.SortKey=2 
             ListView1.SortOrder=lvwAscending 
             ListView1.Sorted=
True 
             
End Select 
             
End Sub
             
例二
             
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" 
             
2Listview控件的View 属性决定着它的显示的方式,具体如下: ListView1.View lvwIcon '图标显示 

            ListView1.View lvwSmallIcon 
'小图标显示 ListView1.View lvwList '列表显示 
             ListView1.View lvwReport '报表显示 添加效果:
             
             
示例文件:
             
代码:
             
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 1 To [A65536].End(xlUp).Row '添加记录
             Set ITM ListView1.ListItems.Add() '添加记录的行标题 定义产生一个新记录,新行 
             
             ITM.Text Cells(i, 
1'添加记录的记录文本说明
             ITM.SubItems(1Cells(i, 2'添加记录的第一个字段的内容,在第二列上显示
             ITM.SubItems(2Cells(i, 3)
             
Next i
             
End Sub
             
代码说明: 1ListView1Gridlines属性为True时显示表格线,为False不显示表格线。
             
2、在ListView控件中,添加记录要通过ListItems集合对象来实现,如本例中Set ITM 
             ListView1.ListItems.Add()
             
3、设置第一列的内容是通过text属性来添加,而以后各列的添加则通过SubItems对象来实现。第2列为SubItems1)第3列为SubItems2..........
             
4、在Listview控件第1列只能左对齐,而不能采取其他对齐方式
             
5、单元格引用:CELLS(行,列) 
             
增加列
             listView1.ColumnHeaders.Add 
             
增加行
             listView1.ListItems.Add

复制代码

 

 

LinKURL: https://www.cnblogs.com/findw/archive/2011/05/13/2045653.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有