使用 ListView 控件

来源:互联网 发布:java系统开发实例 编辑:程序博客网 时间:2024/04/28 16:27
ListView 控件以 ListItem 对象的形式显示数据。每个 ListItem 对象都可有一个可选的图标与其标签相关联。该控件擅长于表示数据的子集(比如数据库的成员)或分布式对象(比如文档模板)。

可能的用途
显示对数据库查询的结果。


显示数据库表中的所有记录。


与 Treeview 控件联合使用,给出 TreeView 控件节点的扩展视图。
可用的四种视图
ListView 控件可以以四种不同的视图模式显示数据(如以下所示参数)。如何对控件编程取决于想让用户看到(或选择)何种视图。

这些视图每种都有其优于其它视图的地方。下表中列出了一些:

视图 优点
图标 可用鼠标操作,使用户能够拖放该对象,并重新排列它们。
小图标 同时能够显示更多的 ListItem。与图标视图相似,可由用户重新排列对象。
列表 提供排序的 ListItems 对象视图。
报表 提供排序的视图,通过 SubItems 能够显示更多的信息。

图标视图的 ListView

图 2.8 小图标视图的 ListView

图 2.9 列表视图的 ListView

图 2.10 报表视图的 ListView

用 View 属性改变视图
要改变视图,可以使用 View 属性。下面的代码将 View 属性设置为报表视图 (3),代码中使用了内部常数 lvwReport:

'该控件的名称为“ListView1”
ListView1.View = lvwReport

用 View 属性,可使最终用户动态地改变视图。在窗体的 Load 事件中,ComboBox 被View属性所选择的视图来充填View所选择:

Private Sub Form_Load()
    '充填到 ComboBox 控件。
    'ComboBox 控件的名称是“cmbChooseView”。
    With cmbChooseView
       . AddItem "Icon"          ' 0
       . AddItem "Small Icon"    ' 1
       . AddItem "List"          ' 2
       . AddItem "Report"       ' 3
    End With
End Sub

在 ComboBox 控件的 Click 事件中,该控件的视图可被重新设置,如下所示:

Private Sub cmbChooseView_Click()
    'ListView 控件的名称是“lvwDB”
    lvwDB.View = cmbChooseView.ListIndex
End Sub

用于图标视图和小图标视图的两个 ImageList 控件
ListItem 对象由标签(Text 属性)和由 ImageList 控件提供的可选图象构成。然而,ListView 控件和其它控件不同,可以具有两个 ImageList 控件,它们分别有 Icons 和 SmallIcons 属性设置。是否使用一个或两个 ImageList 控件取决于想用的视图,它由 View 属性决定。

在列表、小图标和报表视图中,可用小图标代表 ListItem 对象。在这三种视图下,都由一个 ImageList 控件(由 SmallIcons 属性指定)提供图象。在设计时或运行时,将 SmallIcons 属性设置为 ImageList 控件即可提供这些图象。在设计时,用 ListView 控件的“属性页”对话框,可将 SmallIcons 设置为 ImageList。在运行时,可使用下面的代码:

ListView1.SmallIcons = imlSmallIcons

但是在图标视图下,该控件使用第二个 ImageList 控件提供一套不同的图象。在设计时用“属性页”对话框,可将 Icons 属性设置为这第二个 ImageList 控件,或在运行时使用下面的代码:

ListView1.Icons = imlIcons

注意 所用图标的大小由 ImageList 控件决定。可用的大小为 16 x 16、32 x 32、48 x 48 和自定义大小。要得到有关 ImageList 控件的详细说明,请参阅 “ImageList 控件”。

如果计划使用多种视图,并且显示图象,就必须为每个 ListItem 对象设置 SmallIcon 和 Icon 属性。下面的代码首先声明了 ListItem 类型的对象变量,然后将该对象变量设置为用 Add 方法添加到集合的一个 ListItem 对象。最后用对象变量引用设置 SmallIcon 和 Icon 图象:

Dim itmX as ListItem
Set itmX = ListView1.ListItems.Add()
'假设在设置给 SmallIcons 属性的 ImageList 中
'存在一幅名为“smallBook”的图象。
itmX.SmallIcon = "smallBook"
'假设在设置给 Icons 属性的 ImageList 中
'存在一幅名为“BigBook”的图象。
itmX.Icon = "BigBook"

将图象设置到 SmallIcon 和 Icon 属性之后,在用 View 属性切换视图时,就能够自动显示正确的图象了。

在报表视图中显示 ColumnHeaders
报表视图的一个特色是它的 ColumnHeader 对象。ListView 控件在 ColumnHeaders 集合中包含了一个 ColumnHeader 对象的集合。

ColumnHeader

ColumnHeader 对象有 Text 属性,该属性在该控件处于报表视图时显示文本。还可设置每个 ColumnHeader 的 Width 属性,以及 Alignment 属性(它设置了 ColumnHeader 对象中显示文本的对齐方式)。在下面的示例代码中创建了四个 ColumnHeader 对象,并设置了它们的 Text 和 Width 属性:

Dim colX As ColumnHeader '声明变量。
Dim intX as Integer '计数器变量。
For intX = 1 to 4
    Set colX = ListView1.ColumnHeaders.Add()
    colX.Text = "Field " & intX
    colX.Width = ListView1.Width / 4
Next intX

用ListSubItems 集合设置列文本
请注意在除报表视图以外的其它视图中,ListItem 对象只显示一个标签,即 Text 属性。但在报表视图下,每个 ListItem 对象可以有多个其它的文本项。例如,除了书名《Hitchhiker's Guide to Visual Basic...》以外,还有一个作者 ("Vaughn, William R.")、年代 (1996),以及 ISBN 号与其相关。所有这些文本项都是 ListSubItems 集合的成员。为创建 ListSubItem 对象,对 ListSubItems 集合使用 Add 方法这样,要设置 ListItem 对象的作者、年代和 ISBN 号,代码可能应如下面所示那样:

'该控件的名称为 lvwAuthors。
lvwAuthor.ListItems(23).ListSubItems.Add , , _
"Hitchhiker's Guide to Visual Basic and SQL Server"
lvwAuthor.ListItems(23).ListSubItems.Add , , _
"Vaughn, William R."
lvwAuthor.ListItems(23).ListSubItems.Add , , "1996"
lvwAuthor.ListItems(23).ListSubItems.Add , , " 1-55615-906-4"
注意    Visual Basic versions 4.0 和 5.0 中使用的 ListItems 字符串数组已经被ListSubItems 集合取代了。

SubItems 取决于 ColumnHeaders 的出现
ListSubItem 是否存在,以及其数目都取决于 ColumnHeader 对象是否存在、及其数目。也就是说,如果没有 ColumnHeader 对象,就不能创建任何 ListSubItem 对象。进一步说,ColumnHeader 对象的数目,决定了可为 ListItem 对象设置的 ListSubItem 对象的数目。ListSubItem 的数目总是比 ColumnHeader 对象的数目少。这是因为第一个 ColumnHeader 对象总是与 ListItem 对象的 Text 属性相关联,以下所示:

第一个 ColumnHeader 和 SubItems

这样如果上例中 ColumnHeader 对象的数目为 4,则可设置的 ListSubItems 集合的至多为 3 
原创粉丝点击