和其它控件一起使用 ImageList

可以使用 ImageList 控件作为图像的贮藏所,以便其它的 Windows 公用控件使用,其它具有 Picture 属性的控件也可以使用这些图像。

和其它Windows 公用控件一起使用ImageList

可以利用下列控件的属性来使用 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 控件相关联,请按照以下步骤执行:

  1. 在使用 ImageList 控件中图像的控件上单击右键,然后单击“属性”显示“属性页”对话框。

  2. 在“通用”选项卡上,从“ImageList”框中选择 ImageList 控件的名称。

如果要在运行时关联 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 值为“leaftvwData.Nodes.Add , ,"1 node","Top","leaf"   
End Sub

和 ListView 控件一起使用 ImageList 控件

ListView 控件可以同时使用两个 ImageList 控件。与只有一个 ImageList 属性不同,ListView 控件具有 Icons 和 SmallIcons 两个属性,每个属性都可以和一个 ImageList 控件关联。可以在设计时或运行时设置这些关联。

要在设计时将 ListView 控件和两个 ImageList 控件关联,请按照以下步骤执行:

  1. 在 ListView 控件上单击右键,然后单击“属性”显示“属性页”。

  2. 单击“ImageLists”选项卡。

  3. 在“正常”框中,选择一个 ImageList 控件的名称。

  4. 在“”框中,选择另一个 ImageList 控件的名称。

也可以在运行时分配 ImageList 控件,所需要的代码如下例所示:

' 假设 ListView 控件的名称是“lvwDB”, 
' 第一个 ImageList 的名称是“imlSmallImages”,
' 第二个的名称是“imlImagesSet lvwDB.SmallIcons = imlSmallImages
Set lvwDB.Icons = imlImages

所使用的 ListView 控件要取决于ListView控件的 View 属性中所决定的显示模式。如果 ListView 控件是在“图标”视图下,那么它将使用 Icons 属性中命名的 ImageList 所提供的图像。在其它视图中(“列表”、“报告”,或“小图标”),ListView 使用 SmallIcons 属性中命名的 ImageList 所提供的图像。

详细信息 有关 ListView 控件的详细信息,请参阅本章后面的“使用 ListView 控件”。

通过 Index 或 Key 属性分配 ListImage 对象

在将 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 对象上使用描述性的名称就可以使代码更加容易阅读和调试。

和不是 Windows 公用控件一部分的控件一起使用 ImageList 控件

还可以把 ImageList 用做具有 Picture 属性的对象的图像贮藏所。这些对象包括:

  1. CommandButton 控件

  2. OptionButton 控件

  3. Image 控件

  4. PictureBox 控件

  5. CheckBox 控件

  6. Form 对象

  7. Panel 对象( StatusBar 控件)

ListImage 对象的 Picture 属性返回一个 Picture 对象,该对象可以用来分配给其它控件的 Picture 属性。例如,下面的代码将在名为“picBox”的 PictureBox 控件中显示第三个 ListImage 对象:

Set picBox.Picture = ImageList1.ListImages(3).Picture