控件---listview

使用ListView控件要添加引用:Microsoft Windows Common Controls 6.0

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

对象层次结构:

ListView -整个控件

       ColumnHeaders -标题行

              ColumnHeader -标题列

       ListItems -对象行集合

              ListItem -对象行

                     ListSubItems -对象属性集合

                            ListSubItem -对象属性

注意:SubItems和ListSubItems的区别:SubItems是一个String数组;ListSubItems是一个集合。

属性:

View:设置ListView的外观

Sorted:设置ListView中的对象集合是否排序

SortKey:设置以第几项排序。从零开始

SelectedItem:返回选中的对象的引用

 

ColumnHeader对象的SubItemIndex属性:

该属性返回与ListView控件中ColumnHeader对象关联的子项目的索引。子项目是字符串数组,代表显示在报表视图中的ListItem对象的数据。第一列的列标头SubItemIndex属性设置为0,这是因为小图标和ListItem对象的文字总出现在第一列中,而且它们被当作ListItem对象而不是子项目。列标头数目取决于子项目数目。列标头数目总是比子项目数目多1。

在设计时可以利用属性页的“列首”选项卡将ColumnHeader对象添加到ListView控件中,在运行时则用Add方法添加。

ListItem对象的SubItems属性:

返回或设置一个字符串(子项目)数组,它代表ListView控件中ListItem对象的数据。

ListItem对象可包含任意多个的关联项目数据字符串(子项目),但每个ListItem对象子项目数目必须相同。每个子项目都对应于相关的列标头,无法直接向子项目数组添加元素,只有通过ColumnHeaders的Add方法添加列标头的方法来添加子项目。

ListView控件的View属性:

ListView控件可使用四种不同视图显示项目,这可以用View属性来确定。该属性返回或设置ListView控件中ListItem对象的外观。

ListView控件的SortOrder,SortKey和Sorted属性:

控件中的ListItem对象可以按要求进行排序,与排序有关的属性是SortOrder,Sorted和SortKey属性。

SortOrder属性返回或设置一个值,此值决定ListView控件中的ListItem对象以升序或降序排序。

SortKey属性返回或设置一个值,此值决定ListView控件中的ListItem对象如何排序。

Sorted属性返回或设置确定ListView控件中的ListItem对象是否排序的值。

事件:

 AfterLabelEdit:编辑ListItem对象的标签时被触发

BeforeLabelEdit:编辑ListItem对象的标签后触发

ColumnClick:单击列标题时触发。参数中可以获得被单击的列对象。通常用于排序

ItemClick:单击某行或某ListItem时触发。参数中可以获得被单击的ListItem对象

方法:

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

 

ColumnHeader对象的Add方法:

ListView1.ColumnHeader.Add(index,key,text,width,alignment)

ListItem对象是指控件中的一行(不包含标头行)的所有内容。它也可包含文本和图片,但是要使用图片则必须通过Icons和SmallIcons属性引用ImageList控件。

ListItem对象的Add方法:

该方法添加ListItem对象到ListView控件的ListItems集合中并返回对新创建对象的引用。语法如下:

ListItem1.Add(index,key,text,icon,smallIcon)

 

 应用:

ListView控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。ListView控件是由ColumnHeader和ListItem对象所组成的,其中ColumnHeader对象的个数决定了控件的列数,而ListItem对象的个数则决定了控件的行数。

ColumnHeader对象是ListView控件中包含标头文字的项目。利用ColumnHeader对象,用户可以:

  • 单击对象触发ColumnClick事件并根据数据项目将项目排序
  • 拖动对象的右边框来调整列宽度
  • 在报表视图中隐藏ColumnHeader对象

ColumnHeader对象的数目决定每个ListItem对象可包含的子项目数目。删除ColumnHeader对象后所有与列关联的子项目也将被删除,并且每个ListItem对象的子项目数组将平移以更新ColumnHeader的索引,而这将导致剩余的列标头SubItemIndex属性的改变

使用 ListView 控件时,可以将称为 ListItem对象的清单项目,以下列四种不同的方式来显示:大 (标准)图标小图标清单报表

View 属性可决定此控件要使用何种显示方式。

可以用 LabelWrap 属性,来控制用来说明项目的卷标文字是否可换行显示。

可决定清单中项目的排序方法,以及指定被选取项目的呈现方式。

ListView 控件包含 ListItem ColumnHeader 对象。

ListItem 对象定义 ListView控件中项目的各种特性,诸如:项目的简要说明。配合项目出现的图标,图标是由 ImageList控件所提供。

额外的说明文字片段,称为子项目,它们和以报表方式显示的 ListItem对象关联。

HideColumnHeaders 属性,来决定是否在 ListView控件中显示数据行标题。数据行标题可以在设计阶段、或执行阶段中加入。在设计阶段中,您可使用 ListView「控件属性」对话框的「数据行前置数据」页签新增数据行标题。在执行阶段中,则使用 Add方法来新增 ColumnHeader 对象到 ColumnHeaders集合对象中。

请参阅 Visual Basic《程序开发手册》。

 

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

 

读listview控件中整行数据,下列两种方法都可以

【注意】在控件初始化的地方,加入语句 ListView1.FullRowSelect = True。比如在Form_Load()中

1:用事件sub ListView1_Click()

Private Sub ListView1_Click()
Label1.Caption = ListView1.SelectedItem.Text 在第一列读选中行的数据
Label2.Caption = ListView1.ListItems(ListView1.SelectedItem.Index).SubItems(1) 在第二列读选中行的数据
End Sub

【要点】 ListView1.SelectedItem.Index,指定所在行。而SubItems(1)是第二列,SubItems(2)是第三列,以此类推

2:用事件ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

这个代码更加简单,关键在ByVal Item As MSComctlLib.ListItem中的item就是选中的行

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Label1.Caption = Item.Text
Label2.Caption = ListView1.ListItems(Item.Index).SubItems(1)
End Sub

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值