ListView控件

编辑:消受网互动百科 时间:2020-01-19 02:07:42
编辑 锁定
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
ListView 控件可使用四种不同视图显示项目。通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。 可使用 ListView 控件将称作 ListItem 对象的列表条目组织成下列四种不同的视图之一:1.大(标准)图标2.小图标3.列表4.报表 View 属性决定在列表中控件使用何种视图显示项目。还可用 LabelWrap 属性控制列表中与项目关联的标签是否可换行显示。另外,还可管理列表中项目的排序方法和选定项目的外观。
中文名
ListView控件
包    括
包括ListItem和ColumnHeader对象
属    性
Appearance属性
属    性
BackColor属性

ListView控件内容特性

编辑
ListView控件[1]  包括ListItem和ColumnHeader对象。ListItem对象定义ListView控件中项目的各种特性,诸如项目的简要描述、由ImageList控件提供的与项目一起出现的图标和附加的文本片段(称作子项目,它们与显示在报表视图中的ListItem对象关联)。

ListView控件属性

编辑
下面按字母顺序列出了ListView控件的所有属性,可以按Ctrl+F查找。

ListView控件A~G

AllowColumnReorder属性:返回或设置一个值,决定用户是否可以用鼠标对列进行重新排列。
语法:Object.AllowColumnReorder [ = Boolean]
Appearance属性:返回或设置对象的绘图风格,在运行时是只读的。
语法:Object.Appearance
Appearance属性设置值
描述
0
平面,控件没有可视化效果。
1
缺省值)带有三维效果的控件。
Arrange属性:返回或设置一个值,此值决定如何排列ListView控件中的图标或小图标视图。
语法:Object.Arrange [ = Value]
Arrange属性中Value设置值
常数
描述
lvwNone
0
(缺省)无。
lvwAutoLeft
1
左对齐。项目自动沿控件左侧对齐。
lvwAutoTop
2
顶对齐。项目自动沿控件顶端对齐。
BackColor属性:返回或设置对象的背景颜色。
语法:Object.BackColor [ = Color]
BorderStyle属性:返回或设置对象的边框样式。0表示无边框,1表示有边框。
语法:Object.BorderStyle [ = Value]
CheckBoxes属性:返回或设置一个值,确定是否显示复选框
语法:Object.Checkboxes [ = Boolean]
ColumnHeaderIcons属性:返回或者设置Imagelist控件,该控件为ColumnHeaders集合提供图标。
语法:Object.ColumnHeaderIcons [ = ImageList]
ColumnHeaders属性:返回ColumnHeader对象集合的引用。
语法:Object.ColumnHeaders
Container属性:返回或设置Form上控件的容器。在设计时不能使用。
语法:Set Object.Container [ = Container]
DragIcon属性:返回或设置图标,它将在拖放操作中作为指针显示。
语法:Object.DragIcon [ = Icon]
DragMode属性:返回或设置一个值,确定在拖放操作中所用的是手动还是自动拖动方式。
语法:Object.DragMode [ = Number]
DragMode属性中Number设置值
常数
描述
vbManual
0
(缺省值)手动方式,需要在源控件中用Drag方法来启动拖放操作。
vbAutomatic
1
自动方式,单击源控件自动启动拖放操作。只有在OLE容器控件没有焦点时,它才能自动地被拖动。
DropHighlight属性:返回或设置对Node或ListItem对象的引用,在光标移动到该对象上时,它就被突出显示为系统的突出颜色。
语法:Object.DropHighlight [ = Node / ListItem]
Enabled属性:返回或设置一个值,用来决定窗体或控件是否能够对用户产生的事件作出反应。
语法:Object.Enabled [ = Boolean]
FlatScrollBar属性:返回或设置一个值,确定对象中滚动条的外观。
语法:Object.FlatScrollBar [ = Boolean]
Font属性:返回一个Font对象。
语法:Object.Font
ForeColor属性:返回或设置在对象里显示图片和文本的前景颜色。
语法:Object.ForeColor [ = Color]
FullRowSelect属性:返回或设置一个值,决定是否选择整行。
语法:Object.FullRowSelect [ = Boolean]
GridLines属性:返回或设置一个值,决定在报表视图中ListView控件是否显示网格线
语法:Object.GridLines [ = Boolean]

ListView控件H~N

Height属性:返回或设置对象的高度。
语法:Object.Height [ = Number]
HelpContextID属性:为一个对象返回或设置一个相关联上下文的编号。它被用来为应用程序提供上下文有关的帮助。
语法:Object.HelpContextID [ = Number]
HideColumnHeaders属性:返回或设置是否在报表视图中隐藏ListView控件的ColumnHeader对象。
语法:Object.HideColumnHeaders [ = Boolean]
HideSelection属性:返回一个值,以决定当控件失去焦点时选择文本是否加亮显示。
语法:Object.HideSelection
HotTracking属性:该属性的返回值确定是否使用灵敏的鼠标高亮度显示功能。
语法:Object.HotTracking
HoverSelection属性:返回或设置一个值,确定当鼠标指针在ListItem对象上停留时,对象是否被选中。
语法:Object.HoverSelection [ = Boolean]
hWnd属性:返回窗体或控件的句柄。
语法:Object.hWnd
Icons属性:返回或设置与ListView控件中图标视图关联的ImageList控件。
语法:Object.Icons [ = Imagelist]
Index属性:返回控件在控件数组中的标识号。
语法:Object.Index
LabelEdit属性:返回或设置一个值,决定是否可以编辑在控件中的ListItem对象的标签。
语法:Object.LabelEdit [ = Integer]
LabelEdit属性中Integer设置值
常数描述
lvwAutomatic0(缺省)自动的。BeforeLabelEdit事件发生在单击选中的节点的标签时。
lvwManual1
手动的。BeforeLabelEdit事件只发生在调用StartLabelEdit方法时。
LabelWrap属性:返回或设置一个值,此值决定当ListView控件为图标视图时标签是否可换行。
语法:Object.LabelWrap [ = Boolean]
Left属性:返回或设置对象内部的左边与它的容器的左边之间的距离。
语法:Object.Left [ = Value]
ListItems属性:返回控件中ListItem对象集合的引用。
语法:Object.ListItems
MouseIcon属性:返回或设置自定义的鼠标图标。
语法:Object.MouseIcon = LoadPicture(Pathname)或Object.MouseIcon [ = Picture]
MousePointer属性:返回或设置一个值,该值指示在运行时当鼠标移动到对象的一个特定部分时,被显示的鼠标指针的类型。
语法:Object.MousePointer [ = Value]
MultiSelect属性:返回或设置用户是否可以在控件中做多重选择。
语法:Object.MultiSelect [ = Boolean]
Name属性:返回用于标识控件的名字,在运行时是只读的。
语法:

ListView控件O~U

Object属性:返回对象与对象的方法或属性的设置。
语法:Object.Object [.Property | .Method]
OLEDragMode属性:返回或设置是由部件还是由程序员来处理OLE拖放操作。
语法:Object.OLEDragMode [ = Mode]
OLEDragMode属性中Mode设置值
常数
描述
vbOLEDragManual
0
(缺省)人工。程序员处理所有的OLE拖放操作。
vbOLEDragAutomatic
1
自动。部件处理所有的OLE拖放操作。
OLEDropMode属性:返回或设置目标部件如何处理放操作。
语法:Object.OLEDropMode [ = Mode]
OLEDropMode属性中Mode设置值
常数
描述
vbOLEDropNone
0
无。目标部件不接受OLE放操作,并且显示No Drop图标。
vbOLEDropManual
1
人工。目标部件触发OLE放事件,允许程序员用代码处理OLE放操作。
vbOLEDropAutomatic
2
自动。如果DataObject对象包含目标部件能识别的格式的数据,则自动接受OLE拖放操作。当OLEDropMode设为vbOLEDropAutomatic时,在目标上鼠标事件和OLE拖放事件都不会发生。
Parent属性:返回包含控件、或其它对象或者集合的窗体、对象、或集合。
语法:Object.Parent
Picture属性:返回或设置控件中要显示的图片。
语法:Object.Picture [ = Picture]
PictureAlignment属性:返回或设置一个值,确定对象中图片的对齐方式
语法:Object.PictureAlignment [ = Integer]
PictureAlignment属性中Integer设置值
常数
描述
lvwTopLeft
0
左顶部对齐。
lvwTopRight
1
右顶部对齐。
lvwBottomLeft
2
左底部对齐。
lvwBottomRight
3
右底部对齐。
lvwCenter
4
居中。
lvwTile
5
(缺省)平铺。
SelectedItem属性:返回对所选ListItem的引用。
语法:Object.SelectedItem
SmallIcons属性:返回或设置与ListView控件中小图标视图关联的ImageList控件。
语法:Object.SmallIcons[ = Imagelist]
Sorted属性:返回或设置集合中的项目是否排序。
语法:Object.Sorted [ = Boolean]
SortKey属性:返回或设置一个值,决定控件中的ListItem对象如何排序。
语法:Object.SortKey [ = Integer]
SortKey属性中Integer设置值
设置值
描述
0
使用ListItem对象的Text属性排序。
≥1
使用子项目排序。
SortOrder属性:返回或设置一个值,此值决定控件中的ListItem对象以升序或降序排列。
语法:Object.SortOrder [ = Integer]
SortOrder属性中Integer设置值
常数
描述
lvwAscending
0
(缺省)升序。从字母表首部(A~Z)或最早的日期开始排序。数字以字符串的形式排序,第一个数位决定排序的起始位置,其后的数位决定子排序。
lvwDescending
1
降序。从字母表尾部(Z~A)或最晚的日期开始排序。同上。
TabIndex属性:返回或设置父窗体中控件的Tab键次序。
语法:Object.TabIndex [ = Index]
TabStop属性:返回或设置一个值,决定是否能够使用Tab键来将焦点移至该控件。
语法:Object.TabStop [ = Boolean]
Tag属性:返回或设置一个表达式用来存储程序中需要的额外数据。
语法:Object.Tag [ = Expression]
TextBackground属性:返回或设置ListItem对象的背景是透明的还是不透明的。
语法:Object.TextBackground [ = Integer]
ToolTipText属性:返回或设置一个工具提示。
语法:Object.ToolTipText [ = String]
Top属性:返回或设置对象的内顶部和它的容器的顶边之间的距离。
语法:Object.Top [ = Value]

ListView控件V~Z

View属性:返回或设置控件中ListItem对象的外观。
语法:Object.View [ = Value]
View属性中Value设置值
常数
描述
lvwIcon
0
(缺省)图标。每个ListItem对象由标准的图标和文本标签代表。
lvwSmallIcon
1
小图标。每个ListItem对象由小图标及其右侧的文本标签代表。项目水平排列。
lvwList
2
列表。每个ListItem对象由小图标及其右侧的文本标签代表。ListItem对象及其相关的信息在列中垂直排列。
lvwReport
3
报表。每个ListItem对象显示为小图标和文本标签。可在子项目中提供关于每个ListItem对象的附加信息。图标、文本标签和信息显示在列中,其中最左侧一列包含小图标和文本标签。附加列显示每个项目的子项目的文本。
Width属性:返回或设置对象的宽度。
语法:Object.Width [ = Number]

ListView控件解决思路

编辑

ListView控件Drag方法

用于控件的开始、结束或取消拖动操作。不支持命名参数。
语法:Object.Drag Action
Drag方法中Action设置值
常数
描述
vbCancel
0
取消拖动操作。
vbBeginDrag
1
开始拖动Object。
vbEndDrag
2
取消拖动Object。

ListView控件FindItem方法

查找并返回 ListView 控件中 ListItem 对象的引用。
语法:Object.FindItem (String, Value, Index, Match)
FindItem方法参数
部分
描述
Object
必需的。对象表达式,其值是ListView控件。
String
必需的。指定欲查找的ListItem对象的字符串表达式。
可选的。整数或常数,它指定字符串是否与ListItem对象的Text、Subitems及Tag属性相匹配,如Value设置值中所描述。
Index
可选的。唯一标识对象集合成员并指定搜索起始位置的整数或字符串。若为整数,其值为Index属性值;若为字符串,其值为Key属性值。未指定索引时缺省索引为1。
Match
可选的。指定项目的Text属性与字符串怎样匹配的整数或常数,如Match设置值中所描述。
FindItem方法中Value设置值
常数
描述
lvwText
0
(缺省)将字符串与ListItem对象的Text属性相匹配。
lvwSubitem
1
将字符串与ListItem对象的SubItems属性相匹配。
lvwTag
2
将字符串与ListItem对象的Tag属性相匹配。
FindItem方法中Match设置值
常数
描述
lvwWholeWord
0
(缺省)一个整数或常数,它指定若项目的Text属性由所搜索的整字开始时匹配成功。搜索条件非文本时忽略此设置。
lvwPartial
1
个整数或常数,它指定若项目的Text属性由所搜索的字符串开始时匹配成功。搜索条件非字符串时忽略此设置。

ListView控件GetFirst

返回控件内部区域中第一个可视对象的引用。
语法:Object.GetFirstVisible()

ListView控件HitTest方法

返回对位于x和y坐标的ListItem对象或Node对象的引用。通常与拖放操作一起使用,来确定放下的目标项在当前位置是否可用。
语法:Object.HitTest (x As Single, y As Single)

ListView控件Move方式

编辑
用以移动控件。不支持命名参数。
语法:Object.Move Left, Top, Width, Height

ListView控件OLEDrag

引起部件初始化OLE拖放操作。
语法:Object.OLEDrag

ListView控件Refresh方法

强制全部重绘一个窗体或控件。
语法:Object.Refresh

ListView控件SetFocus方法

将焦点移至指定的控件或窗体。
语法:Object.SetFocus

ListView控件这是什么

提供“这是什么”弹出式窗口使用的帮助文件中选定的一个主题。
语法:Object.ShowWhatsThis

ListView控件StartLabel

允许用户编辑标签。
语法:Object.StartLabelEdit

ListView控件常用办法

编辑

ListView控件ZOrder方法

将控件放置在其图层的上下顺序的前端或后端。不支持命名参数。
语法:Object.ZOrder Position

ListView控件ListItems.

添加ListItem对象到ListView控件的ListItems集合中并返回新创建对象的引用。
语法:Object.Add(Index, Key, Text, Icon, SmallIcon)
Add方法参数
部分
描述
Object
必需的。对象表达式,其值是ListItems集合。
Index
可选的。指定在何处插入ListItem的整数。若未指定索引,则将ListItem添加到ListItems集合的末尾。
Key
可选的。唯一的字符串表达式,用来访问集合成员。
Text
可选的。与ListItem对象控件关联的字符串。
Icon
可选的。当ListView控件设为图标视图时,此整数设置从ImageList控件中选定的欲显示的图标。
SmallIcon
可选的。当ListView控件设为小图标时,此整数设置从ImageList控件中选定的欲显示的图标。

ListView控件ListItems

删除集合中的全部对象。
语法:Object.Clear

ListView控件事件

编辑

ListView控件A~G

AfterLabelEdit事件:在编辑当前被选中的ListItem对象的标签之后该事件发生。
语法:Private Sub Object_AfterLabelEdit(Cancel As Integer, Cewstring As String)
AfterLabelEdit事件参数
部分
描述
Object
对象表达式,其值是一个控件。
Cancel
整数,它确定标签编辑操作是否被取消。任何非零整数取消该操作。也可以接受布尔值
NewString
用户输入的字符串或Null,该值为Null时表示用户取消了该操作。
BeforeLabelEdit事件:当试图编辑当前被选中的ListItem对象的标签时该事件发生。
语法:Private Sub Object_BeforeLabelEdit(Cancel As Integer)
Click事件:在控件上按下然后释放一个鼠标按钮时发生。
语法:Private Sub Object_Click [(Index As Integer)]
ColumnClick事件:单击控件中的ColumnHeader对象时,该事件发生。仅当控件的View属性为报表视图时可用。
语法:Private Sub Object_ColumnClick(ByVal ColumnHeader As ColumnHeader)
DblClick事件:当在控件上双击时,该事件发生。
语法:Private Sub Object_DblClick [(Index As Integer)]
DragDrop事件:在一个完整的拖放动作(即将一个控件拖动到一个对象上,并释放鼠标按钮)完成,或使用Drag方法,并将其Action参数被设置为2(Drop)时,该事件发生。
语法:Private Sub Object_DragDrop([Index As Integer, ] Source As Control, x As Single, y As Single)
DragOver事件:它在拖放操作正在进行时发生。可使用此事件对鼠标指针在一个有效目标上的进入、离开或停顿等进行监控。鼠标指针的位置决定接收此事件的目标对象。当State=0表示控件正被向一个目标范围内拖动;State=1表示控件正被向一个目标范围外拖动;State=2表示控件在目标范围内从一个位置移到了另一位置。
语法:Private Sub Object_DragOver([Index As Integer, ] Source As Control, x As Single, y As Single, State As Integer)
GotFocus事件:当对象获得焦点时产生该事件;获得焦点可以通过诸如Tab键切换,或单击对象之类的用户动作,或在代码中用SetFocus方法改变焦点来实现。
语法:Private Sub Object_GotFocus [(Index As Integer)]

ListView控件H~N

ItemClick事件:单击控件中ListItem对象时事件发生。
语法:Private Sub Object_ItemClick(ByVal Item As ListItem)
KeyDown事件:对象具有焦点并按下一个键时发生。
语法:Private Sub Object_KeyDown([Index As Integer, ] Keycode As Integer, Shift As Integer)
KeyPress事件:对象具有焦点并按下或松开一个键时发生。
语法:Private Sub Object_KeyPress([Index As Integer, ] KeyAscii As Integer)
KeyUp事件:对象具有焦点并松开一个键时发生。
语法:Private Sub Object_KeyUp([Index As Integer, ] Keycode As Integer, Shift As Integer)
LostFocus事件:此事件是在一个对象失去焦点时发生,焦点的丢失可以是由于制表键移动或单击另一个对象操作的结果,或是代码中使用SetFocus方法改变焦点的结果。
语法:Private Sub Object_LostFocus [(Index As Integer)]
MouseDown事件:当按下鼠标按钮时发生。
语法:Private Sub Object_MouseDown([Index As Integer, ] Button As Integer, Shift As Integer, x As Single, y As Single)
MouseMove事件:当移动鼠标时发生。
语法:Private Sub Object_MouseMove([Index As Integer, ] Button As Integer, Shift As Integer, x As Single, y As Single)
MouseUp事件:当释放鼠标按钮时发生。
Private Sub Object _MouseUp([Index As Integer, ] Button As Integer, Shift As Integer, x As Single, y As Single)

ListView控件O~U

OLECompleteDrag事件:当源部件被放到目标部件时发生,并通知源部件拖放操作被执行或取消。
语法:Private Sub Object_OLECompleteDrag [(Effect As Long)]
OLEDragDrop事件:当源部件决定放操作能发生,且源部件被放到目标部件时,此事件发生。
语法:Private Sub Object_OLEDragDrop(Data As DataObject, effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
OLEDragOver事件:当一个部件在另一个部件上拖动时发生。
语法:Private Sub Object_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
OLEGiveFeedback事件:在每个OLEDragOver事件后发生
语法:Private Sub Object_OLEGiveFeedback(Effect As Long,DefaultCursors As Boolean)
OLESetData事件:当目标部件在源的DataObject对象上执行GetData方法,但是还没有加载规定格式的数据之前,在源部件上发生。
语法:Private Sub Object_OLESetData(Data As DataObject, Dataformat As Integer)
OLEStartDrag事件:当部件的OLEDrag方法被执行时,或者在OLEDragMode属性被设为Automatic,部件初始化OLE拖放操作时发生。
语法:Private Sub Object_OLEStartDrag(Data As DataObject, Allowedeffects As Long)

ListView控件V~Z

Validate事件:在焦点转换到一个控件之前发生,此时该控件的CausesValidation属性值设置为True
语法:Private Sub Object_Validate(KeepFocus As Boolean)

ListView控件示例

编辑
下面的示例使用Biblio.mdb数据库作为资源,通过ListItem对象移居ListView控件。要试用此例,请将一个ListView控件放置在窗体上,并将代码粘贴到窗体的声明部分。
还必须确保已将Biblio.mdb安装在机器上。在以下代码中检查OpenDatabase函数中的路径,并改变它,使之反映Biblio.mdb在机器上的实际路径。
注意:除非添加到Microsoft DAO 3.5对象库的“引用”,否则示例无法运行。为此,在Project菜单上单击 References。搜索Microsoft DAO 3.5对象库并单击复选框来选择。
Private Sub Form_Load()
'添加 ColumnHeaders。列宽度等于控件宽度
'除以 ColumnHeader 对象的数目。
ListView1.ColumnHeaders. _
Add , , "Author", ListView1.Width / 3)
ListView1.ColumnHeaders. _
Add , , "Author ID", ListView1.Width / 3, _
lvwColumnCenter
ListView1.ColumnHeaders. _
Add , , "Birthdate", ListView1.Width / 3)
' Set View property to Report.
ListView1.View = lvwReport
'为数据访问对象声明对象变量。
Dim myDb As Database, myRs As Recordset
'设置 Database 为 BIBLIO.MDB 数据库。
' IMPORTANT: the Biblio.mdb must be on your
' machine, and you must set the correct path to
' the file in the OpenDatabase function below.
Set myDb = DBEngine.Workspaces(0) _
.OpenDatabase("c:\Program Files\VB\BIBLIO.MDB")
'设置 recordset 为 "Authors" 表。
Set myRs = _
myDb.OpenRecordset("Authors", dbOpenDynaset)
'声明变量以添加 ListItem 对象。
Dim itmX As ListItem
'若当前记录不是最后一条记录,则添加一个 ListItem 对象。
'ListItem 对象的文本使用 author 字段。
'ListItem 对象的 SubItem(1) 使用 AuthorID 字段。
'ListItem 对象的 SubItem(2) 使用 "Year of Birth" 字段。
While Not myRs.EOF
Set itmX = ListView1.ListItems. _
Add(, , CStr(myRs!Author),1) 'Author 字段。
'若 AuthorID 字段不为空,则将 SubItem 1 设置为此字段。
If Not IsNull(myRs!Au_id) Then
itmX.SubItems(1) = CStr(myRs!Au_id) ' Author ID。
End If
'若 birth 字段不为空,则将 SubItem 2 设置为此字段。
If Not IsNull(myRs![Year Born]) Then
itmX.SubItems(2) = myRs![Year Born]
End If
myRs.MoveNext '移动到下一条记录。
Wend
End Sub

ListView控件对象集合

编辑
ListItem包含文本和相关图标(ListImage对象)的索引,除此之外,当它为报表视图时,ListItem还包含代表子项目的字符串数组
ListItems集合包含一个或多个ListItem对象。根据标准的集合语法,可以用ListView.ListItems引用集合,而ListView.ListItems(Index)引用集合中的单个元素。其中的Index指示该ListItem的显示位置。
说明:
ListItem对象可包含文本和图片。然而,若要使用图片则必须通过Icons和SmallIcons属性引用ImageList控件。
也可使用Icon或SmallIcon属性变更图像。
下列示例说明了如何将ColumnHeaders对象和若干带有子项目的ListItem对象添加到ListView控件中。
Private Sub Form_Load()
Dim clmX As ColumnHeader
Dim itmX As ListItem
Dim i As Integer
For i = 1 To 3
Set clmX = ListView1.ColumnHeaders.Add()
clmX.Text = "Col" & i
Next i
'添加 10 个具有相同图标的项目到列表中
For i = 1 To 10
Set itmX = ListView1.ListItems.Add()
itmX.SmallIcon = 1
itmX.Text = "ListItem " & i
itmX.SubItems(1) = "Subitem 1"
itmX.SubItems(2) = "Subitem 2"
Next i
End Sub
参考资料
词条标签:
计算机学