Skip to content

ListView 类

ListView 是一个灵活的多列/图标列表,通过 View 属性选择四种不同的视觉模式:

View描述
lvwIcon换行网格中的大图标;每项显示图标加标签。
lvwSmallIcon换行网格中的小图标。
lvwList单列小图标加标签条目,换行成多列以适应宽度。
lvwReport带标题行的多列表格视图;列通过 ColumnHeaders 定义。

两个主要集合通过属性访问:ListItems 用于行,ColumnHeaders 用于 Report 视图的列标题。

vb
Private Sub Form_Load()
    ' Bind an image list and configure the view
    Set ListView1.SmallIcons = ImageList1
    ListView1.View = lvwReport

    ' Define columns
    ListView1.ColumnHeaders.Add , "name",  "Name",  150
    ListView1.ColumnHeaders.Add , "type",  "Type",   80
    ListView1.ColumnHeaders.Add , "size",  "Size",   80, lvwColumnRight

    ' Add rows
    Dim item As ListItem
    Set item = ListView1.ListItems.Add(, "doc1", "Report.docx", "doc")
    item.SubItems(1) = "Word document"
    item.SubItems(2) = "24 KB"
End Sub

Private Sub ListView1_ItemClick(Item As ListItem)
    Debug.Print "Clicked: " & Item.Text
End Sub

控件从 BaseControlFocusable 继承可聚焦矩形可停靠成员 --- 大小、位置、AnchorsDockFontAppearanceMousePointer / MouseIconToolTipTextDragMode / DragIconDragRefreshSetFocusTabIndex / TabStopZOrderCausesValidationVisualStyleshWndHelpContextID / WhatsThisHelpID

图像列表

ListView 可以绑定到三个独立的 ImageList 实例,每个角色一个:

  • Icons --- 在 lvwIcon 视图中渲染的大图标。
  • SmallIcons --- 在 lvwSmallIconlvwListlvwReport 视图中渲染的小图标。
  • ColumnHeaderIcons --- 在报告视图列标题内渲染的小图标,按列通过 ColumnHeader.Icon 寻址。

ListItem 通过其 IconSmallIcon 属性选择图标,可以是基于1的 Long 索引或各自图像列表的 String 键。

选择和标签编辑

默认为单行选择;将 MultiSelect 设为 True 允许用户 Ctrl-点击和 Shift-点击多项选择。当前聚焦项暴露为 SelectedItemListItem)和 SelectedItemIndexLong)。ListItem.Selected 读写单行的选中状态。

LabelEdit 控制内联标签编辑:

  • lvwAutomatic --- 点击已选中项开始编辑(短暂延迟后;即F2 / 单击并暂停模式)。
  • lvwManual --- 仅编程调用 StartLabelEdit 打开编辑器。
  • lvwDisabled --- 标签不可编辑。

编辑开始触发 BeforeLabelEdit(可取消),编辑结束触发 AfterLabelEdit(可取消,带有建议的新文本)。

排序、列重排和标题

lvwReport 视图中,点击列标题触发 ColumnClick,让应用程序实现排序(包不会自动排序)。当 AllowColumnReorderlvwReport 视图中为 True 时,用户可以拖动列标题重新排序;结果顺序通过 ColumnHeader.Position 反映。

hWndHeader 是嵌入的 SysHeader32 窗口的Win32句柄,暴露用于原始Win32自定义。

属性

AllowColumnReorder

用户是否可以拖动列标题重新排序。Boolean。默认:False。仅在 lvwReport 视图中有效。

Appearance

控件边框的绘制方式。AppearanceConstants 的成员。默认:vbAppear3d。继承。

Arrange

在图标/小图标视图中如何排列项。ListArrangeConstants 的成员。默认:lvwNone

BackColor

列表区域的背景颜色。OLE_COLOR。默认:vbWindowBackground

BorderStyle

控件的边框样式。TreeBorderStyleConstants 的成员:ccNoneccFixedSingle。默认:ccFixedSingle。该枚举与 TreeView 共享。

CheckBoxes

每行是否有前导复选框。Boolean。默认:False。为 True 时,点击触发 ItemCheck

ColumnHeaderIcons

lvwReport 视图中用于列标题图标的 ImageList。各列通过 ColumnHeader.Icon 引用图标。

ColumnHeaders

ColumnHeaders 集合。只读。

FlatScrollBar

控件是否使用平面(而非3D)滚动条。Boolean。默认:False

FullRowSelect

点击行中任何单元格是否选中整行(而非仅点击第一列的文本)。Boolean。默认:False。仅在 lvwReport 视图中有意义。

GridLines

行和列之间是否绘制网格线。Boolean。默认:False。仅在 lvwReport 视图中有意义。

HideColumnHeaders

lvwReport 视图中列标题行是否隐藏。Boolean。默认:False

HideSelection

控件没有焦点时选择高亮是否隐藏。Boolean。默认:True

HotTracking

鼠标悬停时项是否高亮(并启用跟踪点击选择)。Boolean。默认:False

hWnd

列表视图窗口的Win32句柄。LongPtr,只读。

hWndHeader

嵌入的列标题窗口(SysHeader32)的Win32句柄。LongPtr,只读。标记为 [Hidden] [NonBrowsable] --- 仅为高级Win32自定义(如子类化标题)暴露。

Icons

lvwIcon 视图中用于大图标的 ImageList。赋值递增 ImageList 的绑定计数(并递减前一个的);参见绑定计数注意事项

LabelEdit

内联标签编辑如何触发。ListLabelEditConstants 的成员。默认:lvwAutomatic

LabelWrap

lvwIcon 视图中项标签是否换行到多行。Boolean。默认:True

ListItems

ListItems 集合 --- 列表的行。只读。

MultiSelect

用户是否可以选择多个项。Boolean。默认:False

SelectedItem

当前聚焦的 ListItem,如果没有行聚焦则为 Nothing。只读 --- 要更改选择,赋值给 ListItem.Selected

SelectedItemIndex

当前聚焦行的基于1的索引,如果没有行聚焦则为 -1Long,只读。

SmallIcons

lvwSmallIconlvwListlvwReport 视图中用于小图标的 ImageList

TextBackground

项标签文本是否有不透明背景。ListTextBackgroundConstants 的成员。默认:lvwTransparent

View

视觉模式。ListViewConstants 的成员。默认:lvwIcon

方法

GetFirstVisible

返回当前视口中可见的第一个 ListItem。适用于虚拟化场景,应用程序根据用户正在查看的内容更新行内容。

语法:object.GetFirstVisible As ListItem

StartLabelEdit

在当前选中的行上打开内联编辑器。当 LabelEditlvwManual 时使用。

语法:object.StartLabelEdit

事件

AfterLabelEdit

内联标签编辑完成时触发。将 Cancel 设为 True 以恢复;NewString 保存用户建议的新文本。

语法:object_AfterLabelEditCancel As BooleanNewString As String

BeforeLabelEdit

内联标签编辑即将开始时触发。将 Cancel 设为 True 以阻止编辑。

语法:object_BeforeLabelEditCancel As Boolean

Click

在控件内鼠标点击时触发。与 ItemClick 不同,后者仅在点击命中行时触发。

语法:object_Click( )

ColumnClick

用户在 lvwReport 视图中点击列标题时触发。

语法:object_ColumnClickColumnHeader As ColumnHeader

DblClick

在控件内双击时触发。

语法:object_DblClick( )

DragDrop, DragOver

继承的拖放事件。

Initialize

控件窗口创建后触发。

ItemCheck

用户切换行上的复选框时触发(仅在 CheckBoxesTrue 时)。

语法:object_ItemCheckItem As ListItem

ItemClick

当行被选中时触发(通过鼠标点击或键盘导航)。

语法:object_ItemClickItem As ListItem

KeyDown, KeyPress, KeyUp

继承的键盘事件。

MouseDown, MouseMove, MouseUp

继承的鼠标事件。

OLECompleteDrag, OLEDragDrop, OLEDragOver, OLEGiveFeedback, OLESetData, OLEStartDrag

继承的OLE拖放事件。

Scroll

INFO

Scroll 事件在控件上声明但当前源码中标记为 [Unimplemented]。保留用于未来版本;请勿依赖它。

Validate

继承的验证事件。

ListViewConstants

确定 ListView 的视觉模式。在 ListView 类上声明。

成员描述
lvwIcon0换行网格中的大图标。
lvwSmallIcon1换行网格中的小图标。
lvwList2单列列表(换行成多列)。
lvwReport3带标题行的多列报告视图。

ListArrangeConstants

确定在图标/小图标视图中如何自动排列项。在 ListView 类上声明。

成员描述
lvwNone0无自动排列;项保持放置位置。
lvwAutoLeft1项自动从左到右流动。
lvwAutoTop2项自动从上到下流动。

ListTextBackgroundConstants

确定项标签文本是否具有不透明或透明背景。在 ListView 类上声明。

成员描述
lvwTransparent0项文本直接叠加在列表背景上。
lvwOpaque1项文本以匹配 BackColor 的不透明背景绘制。

ListLabelEditConstants

确定何时触发内联标签编辑。在 ListView 类上声明。

成员描述
lvwAutomatic0F2或点击并暂停选中行开始编辑。
lvwManual1StartLabelEdit 打开编辑器。
lvwDisabled2完全禁用标签编辑。

另见

twinBASIC及其LOGO版权为作者"韦恩"所有