VB ListView 控件

ExpandedBlockStart.gif View Code
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( 1 =   1                  ' 第一列内容
        .SubItems( 2 =   2                  ' 第二列内容
     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

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

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行
 
ExpandedBlockStart.gif View Code
           常用属性:
             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集合的属性
             
1 . Text 设置或返回显示文本
             
2 . key 关键字
             
3 . index 索引编号
             
4 . icon , smallicon 不同视图时显示单元格的图标 
             
5 . checked 给checkboxes 打√
             
6 . selected 使处于选定状态
             
7 . ListSubitems(index) 集合 我们可以把这个集合看作对这行中单元格的引用
             Text 设置或返回单元格显示的内容

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


             ColumnHeaders(index) 属性
             ColumnHeaders 属性是ListView控件中列标头的集合
             
1 . text 显示标题文本
             
2 . key
             
3 . index
             
4 . icon 指定标题图标
             
5 . alignment 指定index列的对齐方式 (注意:第一列也就是列表项不能指定)
             
6 . position 返回当前列的索引
             
7 . subitemindex 返回指定列的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的哪部分中搜索(LvwText、LvwSubItem、LvwTag);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 " , " 张力 "
             
' 使用SubItemIndex将SubItem与正确的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号 "  
             
2 、Listview控件的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  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列只能左对齐,而不能采取其他对齐方式
             
5 、单元格引用:CELLS(行,列) 
             增加列
             listView1.ColumnHeaders.Add 
             增加行
             listView1.ListItems.Add

转载于:https://www.cnblogs.com/findw/archive/2011/05/13/2045653.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值