可以使用 ImageList 控件作为图像的贮藏所,以便其它的 Windows 公用控件使用,其它具有 Picture 属性的控件也可以使用这些图像。
可以利用下列控件的属性来使用 ImageList 控件提供的图像,如下表所列:
Windows
公用控件控件对象可设置为 ImageList 图像的属性
ImageCombo 控件ComboItemImage OverlayImage 和 SelImage
ListView 控件ListItemSmallIcon 和 Icon 属性
TreeView 控件NodeImage 和 SelectedImage 属性
Toolbar 控件ButtonImage 属性
Toolbar 控件ButtonHotImageList 属性
Toolbar 控件ButtonDisabledImageList 属性
TabStrip 控件TabImage 属性
详细信息 有关和 ImageCombo、TreeView、ListView、Toolbar 以及 TabStrip 控件一起使用的 ImageList 的示例,请参阅这些控件的应用方案主题。(例如,可以参阅“TreeView 控件场景:绑定 TreeView 到 Biblio.mdb 数据库”)。
要和上述控件一起使用 ImageList,必须首先将 ImageList 和这些控件关联起来,然后为上表所列的某一种属性指定 Key 或 Index 属性值。可以在设计时或运行时进行这些工作。所有 Windows 公用控件,除了 ListView 控件(在本主题中讨论)外,都具有一个 ImageList 属性,这个属性可以设置为正在使用的 ImageList 控件名。
重点 在将 ImageList 控件和其它控件关联之前应该用图像充填它。一旦将 ImageList 和某个控件关联起来并将某个图像分配给控件的属性后,ImageList 控件将不允许添加其它的图像了。
要在设计时将 ImageList 控件和 TreeView、TabStrip 或 Toolbar 控件相关联,请按照以下步骤执行:
如果要在运行时关联 ImageList 控件,那么可能需要使用以下代码:
'
将名为“imlImages
”的ImageList
和'
名为“tvwDB
”的TreeView
控件关联Set tvwDB.ImageList = imlImages
将 ImageList 控件和其它控件关联以后,可以使用 ImageList 控件中图像的 Key 或 Index 属性来设置各种对象的属性。例如,下面的代码将 TreeView 控件中 Node 对象的 Image 属性设置成 Key 属性为“leaf”的 ImageList 图像。
Private Sub Form_Load() ' TreeView
的名称是“tvwData
”。
'
添加一个节点并设置其Image
属性。'
图像的Key
值为“leaf
”tvwData.Nodes.Add , ,"1 node","Top","leaf"
End Sub
ListView 控件可以同时使用两个 ImageList 控件。与只有一个 ImageList 属性不同,ListView 控件具有 Icons 和 SmallIcons 两个属性,每个属性都可以和一个 ImageList 控件关联。可以在设计时或运行时设置这些关联。
要在设计时将 ListView 控件和两个 ImageList 控件关联,请按照以下步骤执行:
也可以在运行时分配 ImageList 控件,所需要的代码如下例所示:
'
假设ListView
控件的名称是“lvwDB
”,
'
第一个ImageList
的名称是“imlSmallImages
”,'
第二个的名称是“imlImages
”Set lvwDB.SmallIcons = imlSmallImages
Set lvwDB.Icons = imlImages
所使用的 ListView 控件要取决于ListView控件的 View 属性中所决定的显示模式。如果 ListView 控件是在“图标”视图下,那么它将使用 Icons 属性中命名的 ImageList 所提供的图像。在其它视图中(“列表”、“报告”,或“小图标”),ListView 使用 SmallIcons 属性中命名的 ImageList 所提供的图像。
详细信息 有关 ListView 控件的详细信息,请参阅本章后面的“使用 ListView 控件”。
在将 ImageList 控件和某个 Windows 公用控件关联起来后,可以使用图像的 Index 或 Key 属性来指定某个特定的图像。
例如,如果和 TreeView 控件一起使用 ImageList,那么下面这些代码将把第三个 ListImage 对象(其 Index 值为3)分配给新 Node 对象的 Image 属性:
' TreeView
控件名为“tvwDB
”。' Add
方法的第五个参数利用' ListImage
对象的Index
或Key
属性'
指定了一个图像。tvwDB.Nodes.Add , , ,"node x", 3
另一方面,可以通过 Key 属性实现同样的效果:
'
假设Key
属性是“打开”tvwDB.Nodes.Add , , ,"node x", "open"
由于 ListImage 对象的 Key 属性必须是唯一的字符串,因此可以在运行时使用 Key 属性而不是 Index 属性来引用图像。这将使代码的可读性更强。
提示 由于 Key 必须是唯一的字符串,因此在每个 ListImage 对象上使用描述性的名称就可以使代码更加容易阅读和调试。
还可以把 ImageList 用做具有 Picture 属性的对象的图像贮藏所。这些对象包括:
ListImage 对象的 Picture 属性返回一个 Picture 对象,该对象可以用来分配给其它控件的 Picture 属性。例如,下面的代码将在名为“picBox”的 PictureBox 控件中显示第三个 ListImage 对象:
Set picBox.Picture = ImageList1.ListImages(3).Picture