Copyright: Automated from the Object Model Database.


加速键

单个字符，作为选取一个对象的快捷方式。先按住 ALT 键再紧接着按加速键，将把焦点定位到该对象上，并使与该对象关联的一个或多个事件初始化。被初始化的一个或多个特定的事件从一个对象变化到另一个对象。如果代码与一个事件关联，当事件被初始化时，代码将被执行。另外也称作键盘加速键，快捷键，键盘快捷键。


背景色

空窗口的客户区或显示屏的颜色，所有的绘图和颜色显示都在其上进行。


被连接的

描述一个其内容与某个特殊的数据源关联的控件，如一个单元或工作单中的一个单元范围。


类标识符 (CLSID)

唯一的标识对象的标识符 (UUID)。一个对象将它的 CLSID 注册到系统注册数据库中，这样该对象可以被其它应用程序装入和编程。


清除

将一个设置改变为“关闭”状态或删去一个值。


客户区

一个窗口中应用程序显示输出（如文本或图形）的部分。


上下文 ID

应用程序中唯一的与某个特定对象相对应的数字或串。上下文 ID 可用来创建应用程序与其相对应的帮助主题之间的连接。


控件组

概念或逻辑上相关的控件的集合。概念上相关的控件通常被看作一个整体，但它们并不一定会互相影响。逻辑上相关的控件会相互之间发生影响。例如，在一组选择性按钮中设置某个按钮时，将会使该按钮组中的其它按钮的值设置为 False。


控件提示

一个简短的词组，用以描述一个控件，一个 Page 或一个 Tab。当用户没有击鼠标键，而仅只是把鼠标指针保持在某个控件上时，将出现该控件提示。控件提示与工具提示相类似。Microsoft 窗体给开发人员在进行设计时提供工具提示，而开发人员为终端用户在运行程序时提供控件提示。


光标

一段向应用程序返回几行数据的软件。一个结果集合上的光标表明结果集合上的当前位置。


循环

按定义好的次序在一组对象上进行移动。


数据格式

一个数据单元的结构或表现，例如文件，数据库记录，电子表格中的单元，或字处理文档中的文本。


数据源

控件被连接到其上的数据的位置，例如工作表上的一个单元。数据源的当前值可存储在控件的 Value 属性中。可是该控件并不存储此数据；它仅显示存储在数据源中的信息。


主控件

一个对“格式”菜单中的“对齐”命令和“按相同大小制作”命令的参照。在对齐各个控件时，所选取的各控件将向主控件对齐。在改变控件大小时，将给所选取的各控件指定主控件的尺寸大小。

主控件由白色的变尺寸控制点所标明。而其它被选取的控件的变尺寸控制点为黑色。


拖放源

被选取用来在一次拖放操作中进行拖动的文本或对象。


枚举常数

关于枚举数据项，可以在使用枚举的属性、方法或事件的描述中找到另外的信息。


前景色

当前被选中用来在屏幕上绘图或显示文本的颜色。在单色显示器中，前景颜色即为一个位图或其它图形的颜色。


网格块

相邻两个网格点间的空间。


输入方法编辑器 (IME)

一个应用程序，它把键入的字符翻译成某种 DBCS 语言的字符，例如日语或汉语。当用户键入时，IME 显示各种可能的等价形式，用户选择最为合适的输入。


被继承的属性

已获得另一个类的特征的属性。


键盘状态

一个返回值，用以标识哪个键被按下以及键盘修饰符 SHIFT, CTRL, 和 ALT 是否被按下。


OLE 容器控件

一种 Visual Basic 控件，用以在一个 Visual Basic 应用程序中连接并嵌入其它应用程序中的对象。


OLE 状态码

一个数据结构的错误编号部分，它返回各种错误条件的信息。该数据结构由对象连接并嵌入所定义。


保留区

一个出于安全的原因用以屏蔽或隐藏另一个字符的字符。例如，当用户键入一个口令时，一个星号显示在屏幕上，以替代被键入的字符。


属性页

一组属性，被表示为一页加了标签的属性单。


RGB

一种颜色定值系统，用以描述由红 (R)，绿 (G)和兰 (B)混合而成的各种颜色。颜色被定义为三个整数的集合 (R,G,B)，其中每个整数在 0-255 之间取值。0 值表明完全没有某种色彩成份，255 表明某种色彩成份的最高浓度。


系统颜色

操作系统为一种特定类型的监视器和视频适配器所定义的颜色。每一种颜色与用户界面的一个特定部分关联，例如窗口标题或菜单。


目标

用户在其上放置被拖动对象的对象。


透明

描述背景为不可见时对象的背景。可看到对象后面的任何事物，例如，应用程序中作为背景来使用的一个图像或图形。使用 BackStyle 属性来使背景成为透明。


未被连接的

描述与工作单单元无关的控件。对比而言，被连接的控件作为工作单的数据源，该工作单可提供对控件值进行显示和编辑的访问。


CheckBox 控件

显示某个项目的选定状态。

说明

使用 CheckBox 以使用户能够从两个值中选定一个，比如从 Yes/No、True/False 或 On/Off 中作选择。如果选定了 CheckBox，它会显示特殊的标记（比如 X），而且其当前设置为 Yes ,True 或 On；如果没有选定 CheckBox，则它是空白的，而且其设置为 No ,False 或 Off。CheckBox 还可以具有 null 值，这种情况与 TripleState 属性的值有关。

如果 CheckBox 被连接的到数据源，则改变设置的同时将改变该源中的值。无效的 CheckBox 显示当前值，但变暗淡，并且不允许改变用户界面的值。

在群组框中也可以使用复选框，以选定一组相关项目中的一个或多个。例如，可以创建一个包含可选项目清单的订单窗体，每个项目前有一个 CheckBox。可以通过检查相应的 CheckBox 来选定特定的一项或多项。

CheckBox 的缺省属性是 Value 属性。

CheckBox 的缺省事件是 Click 事件。

注意  ListBox 也能够通过选定的选项使用复选标记。根据应用程序的需要，使用 ListBox 控件，而不使用一组 CheckBox 控件。


ComboBox 控件

将 ListBox 和 TextBox 的特性组合在一起。通过 TextBox 可以输入新值，通过 ListBox 可以选定已有的值。

说明

如果 ComboBox 被连接的到数据源，那么 ComboBox 将用户输入或选定的值插入数据源中。如果连结多栏的组合框，那么 BoundColumn 属性将决定什么值被存入连结的数据源。

ComboBox 中的列表由一行行的数据构成。每行可有一列或多列，列标头是可有可无的。有些应用程序不支持列标头，还有些只提供有限的支持。

ComboBox 的缺省属性是 Value 属性。

ComboBox 的缺省事件是 Change 事件。

注意   如果再任何时候都希望显示列表的多行，则可能要用 ListBox 代替 ComboBox。如果希望使用 ComboBox 同时又将值限定在列表的那些行中，可设置 ComboBox 的 Style 属性，以使该控件看上去象下拉列表框。


CommandButton 控件

启动、结束或中断一个操作或一系列操作。

说明

被赋予 CommandButton 的 Click 事件的宏或事件过程确定 CommandButton 做什么的具体作用。例如，可以创建打开另一窗体的 CommandButton。在 CommandButton 上可以显示文本、图片，也可以既显示文本又显示图片。

CommandButton 的缺省属性是 Value 属性。

CommandButton 的缺省事件是 Click 事件。


Frame 控件

创建有一定功能的、可视的控件组。

说明

在 Frame 中的所有选项按钮是互斥的，所以可用 Frame 创建选项群组。还可用 Frame 将内容密切相关的控件结成组。例如，在处理顾客订单的应用中，可用 Frame 将顾客的姓名、地址和帐号结成组。

还可用 Frame 创建触发器按钮，触发器按钮不是互斥的。

Frame 的缺省事件是 Click 事件。


Image 控件

在窗体中显示图片。

说明

Image 可将图片作为窗体数据的一部分来显示。例如，可用 Image 在个人信息窗体中显示雇员的照片。

Image 可用于剪裁、缩放图片，或修改图片的大小，但不能用于编辑图片的内容。例如，不能用 Image 改变图片的颜色，将图片变成透明的，或对图片进行加工。这些任务必须通过图象编辑软件完成。

Image 支持如下文件格式：

• 	*.bmp

• 	*.cur

• 	*.gif

• 	*.ico

• 	*.jpg

• 	*.wmf

注意   在 Label 中也可以显示图片。然而 Label 不支持对图片的剪裁、缩放，以及改变图片的大小。

Image 的缺省事件是 Click 事件。


ListBox 控件

显示一些值的列表，并通过它选定一个或多个。

说明

如果 ListBox 被连接的到数据源，则 ListBox 将选定的值保存到数据源中。

ListBox 能够以列表形式出现，也能够以一组 OptionButton 控件或 CheckBox 控件形式出现。

ListBox 的缺省属性是 Value 属性。

ListBox 的缺省事件是 Click 事件。

注意   不能在下拉式的 ListBox 中放入文本。


MultiPage 控件

将多屏信息作为单个集合给出。

说明

MultiPage 在处理可按不同范畴分类的大量信息时很有用。例如，使用 MultiPage 显示雇员情况应用程序中的信息。一页用与显示个人信息，比如姓名和地址，另一页可能列出以前的雇员，第三页可能列出参考情况。MultiPage 能够可视地将相关信息组合起来，同时能够随时访问整个记录。

新页被添加到当前选定页的右边，而不紧贴着它。

注意   MultiPage 是 Pages 集合的容器，它保存了一个或多个 Page 对象。

MultiPage 的缺省属性是 Value 属性，该属性返回 MultiPage 的 Pages 集合中当前活动 Page 的索引编号。

MultiPage 的缺省事件是 Change 事件。


OptionButton 控件

显示控件组选项中某一项的选定状态。

说明

用 OptionButton 显示群组中的这一项是否被选定。请注意 Frame 中的每个 OptionButton 是相互排它的。

如果 OptionButton 被连接的到数据源，则 OptionButton 能够用显示该数据源的值，比如 Yes/No , True/False 或 On/Off 中的值。如果选定了 OptionButton，则设置为 Yes , True 或 On；如果没有选定 OptionButton，则设置为 No , False 或 Off。例如，在库存跟踪应用中的 OptionButton 能够显示某一项是否缺货。如果 OptionButton 被连结到数据源，那么改变设置将同时改变数据源中的值。无效的 OptionButton 变暗，并且不显示值。

OptionButton 能够具有 null 值，这与 TripleState 属性的值有关。

也可以在群组框中使用 OptionButton，以选择一组相关项目中的一个或多个。例如，在创建项目的列表构成的订单窗体时，可在每项之前加 OptionButton。可以通过检查相应的 OptionButton 来选定一个特定项目。

OptionButton 缺省属性是 Value 属性。

OptionButton 缺省事件是 Click 事件。


ScrollBar 控件

基于滚动框的位置，返回或设置另一控件的值。

说明

ScrollBar 是可放置在窗体中的独立控件。它看上去象在某些诸如 ListBox 或 ComboBox 的下拉部分中所看到的滚动条。然而，与这些例子中的滚动条不同，独立的 ScrollBar 不是任何其它控件的集成部分。

为了用 ScrollBar 设置或读取其它控件的值，必须自己编写处理 ScrollBar 事件和方法的代码。例如，为了用 ScrollBar 更新 TextBox 的值，可编写代码读取 ScrollBar 的 Value 属性，然后设置 TextBox 的 Value 属性。

ScrollBar 的缺省属性是 Value 属性。

ScrollBar 的缺省事件是 Change 事件。

注意   要创建横向或纵向的 ScrollBar，在窗体中横向或纵向拖动 ScrollBar 变尺寸控点。


SpinButton 控件

数字递增和递减。

说明

单击 SpinButton 只改变 SpinButton 的值。可以编写代码利用 SpinButton 更新其它控件被显示的值。例如，可用 SpinButton 改变日期显示中的年、月或日。也可用 SpinButton 被在值域或项目列表中滚动，或改变文本框中的显示。

要显示 SpinButton 更新的值，必须将 SpinButton 的值赋给某个控件的显示部分，比如 Label 的 Caption 属性或 TextBox 的 Text 属性。要创建横向或纵向的 SpinButton，则在窗体中沿横向或纵向拖动 SpinButton 变尺寸控点。

SpinButton 的缺省属性是 Value 属性。

SpinButton 的缺省事件是 Change 事件。


TabStrip 控件

将一套相关的控件作为可视化群组显示。

说明

通过 TabStrip 可以查看相关控件的不同的信息集合。

例如，控件可能显示一组成员的个人日常计划信息，其中不同信息集合对应小组中的不同个人。将每张标签的标题设置为成员的姓名。这样就可以通过编写代码实现如下功能 ：在单击某张标签时，更新控件以显示该标签对应的个人信息。

注意   在内部实现中 TabStrip 被作为 Tabs 集合的容器，在该集合中顺序保存了一组 Tab 对象。

TabStrip 的缺省属性是 SelectedItem 属性。

TabStrip 的缺省事件是 Change 事件。


TextBox 控件

显示用户输入或组织好的一系列数据信息。

说明

TextBox 是显示用户输入信息的最常用控件。同时还能显示一系列信息，例如数据库表、查询、工作表单或计算结果。如果 TextBox 被连接的到数据源，则改变对 TextBox 内容所作的修改同时也改变它所连结数据源中的值。

应用到 TextBox 中任何文本的格式将影响该控件中的所有文本。例如，改变该控件中任何字符的字体或点阵大小，将对该控件中的所有字符产生影响。

TextBox 的缺省属性是 Value 属性。

TextBox 的缺省事件是 Change 事件。


ToggleButton 控件

显示项目的选定状态。

说明

用 ToggleButton 显示某个项目是否被选定。如果 ToggleButton 被连接的到数据源，则 ToggleButton 将用 Yes/No , True/False , On/Off 或选择其它二值显示数据源的当前值。如果选定了 ToggleButton，则当前设置为 Yes , True 或 On；如果未选定 ToggleButton，则设置为 No , False 或 Off。如果 ToggleButton 被连结到数据源，则改变设置将同时改变数据源中的值。无效的 ToggleButton 能够显示值，但颜色变淡，并且不能通过用户界面进行修改。

在 Frame 中，也可以使用 ToggleButton 在一组相关项目中选定一个或多个项目。例如，可以创建具有可用项目列表的订单窗体，在每个项目之前放置 ToggleButton。这样就能够通过选定适当的 ToggleButton 来选定特定的项目。

ToggleButton 的缺省属性是 Value 属性。

ToggleButton 的缺省事件是 Click 事件。


DataObject 对象

用于转换操作的格式化的文本数据保留区。它还保留了与 DataObject 中保存的每段文本对应的数据格式列表。

说明

DataObject 能够保存一段剪贴板文本格式的文本，以及一段附加文本格式的文本，比如自定义和用户定义的格式的文本。

DataObject 与剪贴板不同。DataObject 支持与剪贴板有关的命令，以及文本的拖放操作。在开始进行与剪贴板有关的操作（比如 GetText）或拖放操作时，与该操作有关的数据被移到 DataObject。

DataObject 的工作方式与剪贴板很相象。如果将一段文本复制到 DataObject，DataObject 将保存该段文本。如果将相同格式的第二段本复制到该 DataObject，则该 DataObject 清除前一文本，保存第二段的复本。它保存一段指定格式的、从最近一次操作得到的文本。


Font 对象

定义控件或窗体使用的文本的特征。

说明

每个控件或窗体都有自己的 Font 对象，以便在设置文本特征时独立于其它控件或窗体定义的特征。使用字体属性指定字体名称，设置粗体或加下划线的文本，或调整文本的大小。

注意  窗体或容器的字体决定窗体中控件的缺省字体属性。

Font 的缺省属性是 Name 属性。如果 Name 属性包含空字符串，则 Font 对象使用缺省的系统字体。


Label 控件

显示描述性文本。

说明

窗体中的 Label 控件显示描述性文本，比如标题、图片或简单的指导信息。例如地址簿的标签可以包括姓名、街道或城市的 Label。Label 不能显示数据源中的值或表达式；它总是未被连接的，并且在从一个记录移到另一个记录时不会改变。

Label 的缺省属性是 Caption 属性。

Label 的缺省事件是 Click 事件。


Page 对象

MultiPage 的一页，Pages 集合的一个成员。

说明

每个 Page 对象保存它自己的一套控件，它不需要依赖集合中其它页的信息。Page 从其容器中继承了一些属性；每个被继承的属性的值由容器进行赋值。

在 Pages 集合中每个 Page 具有唯一的名称和索引。既可用名称也可用索引引用 Page。集合中的第一个 Page 的索引为 0；第二个 Page 的索引是 1；依此类推。如果两个 Page 对象具有相同的名称，则必须用它们的索引值引用每个 Page。在代码中使用名称进行引用，则只能访问使用该名称的第一个 Page。

第一个 Page 的缺省名称为 Page1；第二个 Page 的缺省名称为 Page2。


Tab 对象

Tab 是 Tabs 集合的一个成员。

说明

在视觉效果上，Tab 对象看起来象是从一个较大的矩形区域伸出的一个矩形，或者像一个与矩形区域相邻的按钮。

与 Page 相对立，Tab 不包含任何控件。出现在 TabStrip 界定的区域内的控件被包含在窗体之中，即 TabStrip 中。

每个 Tab 都具有它自己的一套属性，但没有方法或事件。必须使用适当的 TabStrip 的事件以启动对单个 Tab 的处理。

每个 Tab 在集合中具有唯一的名称和索引值。可用其名称或索引值引用 Tab。第一个 Tab 的索引是 0；第二个 Tab 的索引是 1；依此类推。如果两个 Tab 对象具有相同的名称，就必须用索引值引用每个 Tab。在代码中使用名称进行引用，则只能访问使用该名称的第一个 Tab。


Controls 集合

收集对象所包含的所有控件。

说明

对象的 Controls 集合中的每个控件具有唯一的索引，其值可以是整数或字符串。集合中的第一个控件的索引值是 0；第二个控件的索引是 1；依此类推。该索引指出了控件加入集合的顺序。

如果索引为字符串，则它代表该控件的名称。控件的 Name 属性也表示控件的名称。

可用 Controls 集合对控件进行枚举或计数并对它们设置属性。例如，可以对特定窗体的 Controls 集合进行枚举，并将每个控件的 Height 属性设置为特定值。

注意   For Each...Next 语句可用于集合的枚举。


Pages 集合

Pages 集合包含 MultiPage 的所有页。

说明

每个 Pages 集合提供管理集合中的一些页的特性，以及标识当前使用页的特性。

在 Pages 集合中 Page 对象具有唯一的名称和索引值。可用名称或索引值引用 Page。集合中的第一个 Page 的索引是 0；第二个 Page 的索引是 1；依此类推。第一页的缺省名称是 Page1；第二页的缺省名称是 Page2。

Pages 集合的缺省值标识集合的当前 Page。


Tabs 集合

Tabs 集合包含 TabStrip 的所有 Tabs。

说明

每个 Tabs 集合提供管理集合中的一些卡片的特性，以及标识当前使用卡片的特性。

Tabs 集合的缺省值标识集合的当前 Tab。

Tabs 集合中 Tab 对象具有唯一的名称和索引值。可用名称或索引值引用 Tab。Tab 的索引值反映它在集合中的顺序。集合中的第一个 Tab 的索引是 0；第二个 Tab 的索引是 1；依此类推。


Microsoft 窗体对象原型一览


AddControl 事件

该事件发生在一个控件被插入窗体、Frame 或 MultiPage 的一个 Page 时。

语法

对于 Frame
Private Sub object_AddControl( )

对于 MultiPage
Private Sub object_AddControl( index As Long, ctrl As Control)

AddControl 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
index	必需的。包含新控件的 Page 的索引。
ctrl	必需的。添加的控件。
说明

在运行时添加一个控件时，AddControl 事件将发生。在设计时添加控件不初始化这个事件，在运行时窗体一开始被加载和显示也不初始化这个事件。

这个事件缺省的动作是添加一个控件到指定的窗体、Frame 或者 MultiPage 中。

Add 方法将 AddControl 事件初始化。


AfterUpdate 事件

该事件通过用户界面，在控件中的数据被改变之后发生。

语法

Private Sub object_AfterUpdate( )

AfterUpdate 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
说明

AfterUpdate 事件发生与该控件是否被连接的无关，（也就是，当 RowSource 属性为该控件指定了一个数据源）。这个事件不能被取消。如果你想取消这次更改（恢复控件原来的值），用 BeforeUpdate 事件并设置 Cancel 参数为 True。

对于当前控件来说，AfterUpdate 事件发生在 BeforeUpdate 事件之后，Exit 事件之前。对于 Tab 键顺序中的下一个控件来说，AfterUpdate 事件发生在 Enter 事件之前。


BeforeDragOver 事件

当拖放操作正在进行中该事件发生。

语法

对于 Frame
Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于 MultiPage
Private Sub object_BeforeDragOver( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于 TabStrip
Private Sub object_BeforeDragOver( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于其它控件
Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

BeforeDragOver 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
index	必需的。拖放操作都将影响 MultiPage 中的 Page 的索引。
Cancel	必需的。事件状态。False 表示控件应当处理该事件（缺省）。True 表示应用程序处理该事件。
ctrl	必需的。正在被拖动的控件。
Data	必需的。在 拖放操作中被拖动的数据。该数据被包装在一个 DataObject 之中。
X, Y	必需的。控件位置的横坐标和纵坐标。这两个坐标用点来度量。X 从该控件的左边缘测量；Y 从该控件的顶部测量。
DragState	必需的。被拖动数据的转移状态。.
Effect	必需的。通过拖放源支持的操作。
Shift	必需的。指定 SHIFT , CTRL, 和 ALT 键的状态。
设置

DragState 的设置如下：

常数	值	说明
fmDragStateEnter	0	鼠标箭头在目标范围之内。
fmDragStateLeave	1	鼠标箭头在目标范围之外。
fmDragStateOver	2	鼠标箭头在一个新的位置，但仍在同一目标范围内。
Effect 的设置如下：

常数	值	说明
fmDropEffectNone	0	没有复制或移动拖放源到拖放目标。
fmDropEffectCopy	1	复制拖放源到拖放目标。
fmDropEffectMove	2	移动拖放源到拖放目标。
fmDropEffectCopyOrMove	3	复制或移动拖放源到拖放目标。
Shift 的设置如下：

常数	值	说明
fmShiftMask	1	按下 SHIFT 键。
fmCtrlMask	2	按下 CTRL 键。
fmAltMask	4	按下 ALT 键。
说明

当鼠标箭头直接在一个有效的目标上进入、离开或停留时，用该事件监控鼠标箭头。当 拖放操作在进行时，在用户移动鼠标、按下或放开鼠标键时，系统初始化该事件。鼠标指针位置决定了接收这一事件的目标对象。通过测试 DragState 参数确定鼠标箭头的状态。

当一个控件处理这个事件时，可用 Effect 参数标识执行的拖放动作。当 Effect 被设置为 fmDropEffectCopyOrMove，拖放源支持复制  ( fmDropEffectCopy )、移动 ( fmDropEffectMove ) 或取消 ( fmDropEffectNone ) 操作。

当 Effect 被设置为 fmDropEffectCopy。拖放源支持复制或取消 ( fmDropEffectNone ) 操作。

当 Effect 被设置为 fmDropEffectMove。拖放源支持移动或取消 ( fmDropEffectNone ) 操作。

当 Effect 被设置为 fmDropEffectNone。拖放源支持取消 ( fmDropEffectNone ) 操作。

Cancel为 False 时，大多数控件不支持拖放，这是缺省的设置。这意味着，该控件拒绝试图拖动或放下该控件上的任何东西，并且该控件不初始化 BeforeDropOrPaste 事件。对于这一点，TextBox 和 ComboBox 控件是个例外；这些控件支持拖放操作，即使 Cancel 为 False。


BeforeDropOrPaste 事件

该事件发生在当用户即将往一个对象上放下或粘贴数据时。

语法

对于 Frame
Private Sub object_BeforeDropOrPaste( ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于 MultiPage
Private Sub object_BeforeDropOrPaste( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于 TabStrip
Private Sub object_BeforeDropOrPaste( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于其它控件

Private Sub object_BeforeDropOrPaste( ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

BeforeDropOrPaste 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象名。
index	必需的。放下或粘贴操作将都影响 MultiPage 中的 Page 的索引。
Cancel	必需的。事件状态。False 表示控件应当处理该事件（缺省）。True 表示应用程序处理该事件。
ctrl	必需的。目标控件。
Action	必需的。根据当前键盘设置，指出正在进行中的拖放操作的结果。
Data	必需的。在拖放操作中被拖动的数据。该数据被包装在一个 DataObject 中。
X, Y	必需的。当放置发生时鼠标箭头位置的横坐标和纵坐标。这两个坐标都用点来度量。X 从控件的左边缘起测量；Y 从控件的顶部起测量。
Effect	必需的。对于目标控件拖放 操作的影响。
Shift	必需的。指定 SHIFT , CTRL 和 ALT 的状态。
设置

Action 的设置如下：

常数	值	说明
fmActionPaste	2	将选中的对象粘贴到拖放目标。
fmActionDragDrop	3	表示用户已将对象从它的源拖到了拖放目标，并已将它放下在拖放目标上。
Effect 的设置如下：

常数	值	说明
fmDropEffectNone	0	没有复制或移动拖放源到拖放目标。
fmDropEffectCopy	1	复制拖放源到拖放目标。
fmDropEffectMove	2	移动拖放源到拖放目标。
fmDropEffectCopyOrMove	3	复制或移动拖放源到拖放目标。
Shift 的设置如下：

常数	值	说明
fmShiftMask	1	SHIFT 键被按下。
fmCtrlMask	2	CTRL 键被按下。
fmAltMask	4	ALT 键被按下。
说明

对于 MultiPage 或 TabStrip，当 Visual Basic 的应用程序传输一个数据对象到该控件时初始化这个事件。

对于其它控件，系统在放下或粘贴操作之前立即初始化该事件。

当一个控件处理这个事件时，可更改 Action 参数来标识执行的拖放动作。当 Effect 设置为 fmDropEffectCopyOrMove，可分配 Action 给 fmDropEffectNone , fmDropEffectCopy 或 fmDropEffectMove。当 Effect 设置为 fmDropEffectCopy 或 fmDropEffectMove，可重新分配 Action 给 fmDropEffectNone。当 Effect 被设置为 fmDropEffectNone，则不能重新分配 Action。


BeforeUpdate 事件

控件中的数据被改变之前该事件发生。

语法

Private Sub object_BeforeUpdate( ByVal Cancel As MSForms.ReturnBoolean)

BeforeUpdate 事件的语法有以下这些部分：

部分	说明
object	必需的。一个合法的对象。
Cancel	必需的。事件状态。False 表示控件应当处理该事件（缺省）。True 取消更新并表示应用程序处理事件。
说明

BeforeUpdate 事件发生与该控件是否被连接的无关（也就是说，当 RowSource 属性为该控件指定一数据源时）。对于该控件来说，这个事件发生在 AfterUpdate 和 Exit 事件之前（对于接收焦点的下一个控件来说，该事件发生在 Enter 事件之前）。

如果设置 Cancel 参数为 True，焦点仍留在该控件上，无论 AfterUpdate 事件还是 Exit 事件都不会发生。


Change 事件

当 Value 属性改变时该事件发生。

语法

Private Sub object_Change( )

Change 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
设置

当 Value 属性的设置改变时 Change 事件发生，与是否更改代码的执行结果或在界面上用户的操作无关。

这里是改变 Value 属性的操作的几个例子：

• 	单击 CheckBox、OptionButton 或 ToggleButton。

• 	输入或选择 ComboBox , ListBox 或 TextBox 的新的文本值。

• 	在 TabStrip 上选择一个不同的标签。

• 	在 ScrollBar 中移动滚动框。

• 	在 SpinButton 上单击向上箭头或向下箭头。

• 	在 MultiPage 中选择不同的页。

说明

Change 事件过程可以使显示在诸多控件上的数据同步或一致。例如，可用 Change 事件过程的 ScrollBar 来更改显示 ScrollBar 值的 TextBox 的内容。或者可用 Change 事件过程来显示在一个工作区内的数据和公式以及在另一区内的结果。

注意  在有些情况下，当 Value 属性改变时，Click 事件也可能发生。然而对于检测一个属性的新值，使用 Change 事件是个首选的技术。


Click 事件

该事件发生在下面两种情况之一：

• 	用户用鼠标单击一控件。

• 	用户在几种可能的值中间明确地为控件选择一个值。

语法

对于 MultiPage, TabStrip
Private Sub object_Click( index As Long)

对于所有的其它控件
Private Sub object_Click( )

Click 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
index	必需的。在与该事件相关联的 MultiPage 或 TabStrip 中的页或标签的索引。
说明

Click 事件在两种情况中发生，第一种情况应用于 CommandButton，Frame，Image，Label，ScrollBar 和 SpinButton。而第二种情况用于 CheckBox , ComboBox , ListBox , MultiPage , TabStrip 和 ToggleButton。当值改变为 True 时，它也用于一个 OptionButton。

下面是初始化 Click 事件的动作的几个例子：

• 	单击窗体的空白区或窗体上的无效控件（除了列表框）。

� 	单击 CommandButton。如果命令按钮已不具有焦点，则 Enter 事件发生在 Click 事件之前。

• 	当 CommandButton 具有焦点时按 SPACEBAR 键。

• 	用鼠标左键单击控件（左击）。

• 	在一个窗体上按回车键，该窗体上有一个命令按钮，只要没有其它的命令按钮具有焦点，其 Default 属性为 True。

• 	在一个窗体上按回车键，该窗体上有一个命令按钮，只要没有其它的命令按钮具有焦点，其 Cancel 属性为 True。

• 	按一个控件的加速键。

如果 Click 事件是由单击控件引起的，那么导致 Click 事件的事件序列有：

1.	MouseDown

2.	MouseUp

3.	Click

对有些控件，Click 事件发生在当 Value 属性改变时。然而，在检测一个属性的新值时，使用 Change 事件是个优选的技术。下面是由于给控件赋新值而初始化 Click 的动作的例子：

• 	在 MultiPage 或 TabStrip 中单击一个不同的页或标签。这些控件的 Value 属性反映了当前的 Page 或 Tab。单击当前的页或标签不改变控件的值，也就不初始化 Click 事件。

• 	单击 CheckBox 或 ToggleButton，当这些控件当中的一个具有焦点时按 SPACEBAR 键，按这些控件中的一个的加速键，或者用代码改变该控件的值。

• 	将 OptionButton 的值变为 True。通过设置某群组内的一个 OptionButton 为 True，将该群组内的其余按钮设置为 False，但是 Click 事件只对值变为 True 的那个按钮发生。

• 	选择一个 ComboBox 或者 ListBox 的值，使其完全与该控件下拉列表中的某项匹配。例如，若列表未经排序，在编辑区键入的字符的第一次匹配可能不是列表中的仅有的匹配，所以选择这样的值并不初始化 Click 事件。在一个经排序的表中，可用全匹配确保所选择的值是用户键入的文本的唯一匹配。

若 Value 设置为 Null，不会初始化 Click 事件。

注意   左击改变控件的值，它初始化 Click 事件。右击不改变控件的值，所以它不初始化 Click 事件。


DblClick 事件

当用户指向一个对象并连击鼠标两下时，DblClick 事件发生。

语法

对于 MultiPage, TabStrip
Private Sub object_DblClick( index As Long, ByVal Cancel As MSForms.ReturnBoolean)

对于其它事件
Private Sub object_DblClick( ByVal Cancel As MSForms.ReturnBoolean)

DblClick 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
index	必需的。在 Pages 或 Tabs 集合里的 Page 或 Tab 对象的位置。
Cancel	必需的。事件状态。False 表示该控件应当处理该事件（缺省）。True 表示应用程序处理该事件。
说明

对于这个发生的事件，这两次击键必须发生在由系统的双击速度的设置所制定的时间范围之内。

对于支持 Click 的控件，下面的事件序列引发 DblClick 事件：

1.	MouseDown

2.	MouseUp

3.	Click

4.	DblClick

如果一个控件，比如 TextBox，不支持 Click，Click 便从引发 DblClick 事件的事件序列中被忽略掉。

如果击两次时 Cancel 的返回值为 True，控件将忽略第二次单击。第二次单击与第一次单击的作用是否相反是非常有用的，比如双击一个切换按钮。Cancel 参数允许窗体忽略第二次单击，因此无论是单击还是双击按钮都有同样的作用。


DropButtonClick 事件

每当下拉式列表出现或消失该事件发生。

语法

Private Sub object_DropButtonClick( )

DropButtonClick 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
说明

通过代码或者在用户界面上采用确定动作，都可初始化 DropButtonClick 事件。

在代码中，调用 DropDown 方法初始化 DropButtonClick 事件。在用户界面上，下列动作中的任何一个都能初始化此事件：

• 	单击控件上的下拉式按钮。

• 	按 F4 键。

上述的任何一个动作，在代码中或是在界面上，都使下拉式框出现在控件上。当下拉式框消失时，系统初始化 DropButtonClick 事件。


Enter， Exit 事件
Enter, Exit 事件

Enter 发生在一个控件从同一窗体上的一个控件实际接收焦点之前。Exit 立即发生在同一窗体上一个控件转移焦点到另一个控件之前。

语法

Private Sub object_Enter( )

Private Sub object_Exit( ByVal Cancel As MSForms.ReturnBoolean)

Enter 和 Exit 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
Cancel	必需的。事件状态。False 表示该控件应当处理这个事件（缺省）。True 表示应用程序处理这个事件并且焦点应当留在当前控件上。
说明

Enter 事件和 Exit 事件似于在 Visual Basic 中的 GotFocus 和 LostFocus 事件。不同于 GotFocus 和 LostFocus 的是，当窗体接收或失去焦点时 Enter 事件和 Exit 事件不发生。

例如，假如选择了初始化 Enter 事件的复选框。然后，如果选择同一窗体中的另一个控件，那么对于该复选框来说，Exit 事件被初始化（因为焦点正移到同一窗体中的一个不同的对象上），对于该窗体中的第二个控件来说，Enter 事件发生。

因为 Enter 事件发生在焦点移到一特定控件上之前，所以可用 Enter 事件过程来显示指令；例如，可用一个宏或者事件过程来显示一个小窗体或消息框，标识控件典型包含的数据类型。

注意  为防止控件失落焦点，给 Exit 事件的 Cancel 参数赋以 True。


Error 事件

当控件检测到一个错误并不能将该错误信息返回调用程序时该事件发生。

语法

对于MultiPage
Private Sub object_Error( index As Long, ByVal Number As Integer, ByVal Description As MSForms.ReturnString, ByVal SCode As SCode, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean)

对于其它控件
Private Sub object_Error( ByVal Number As Integer, ByVal Description As MSForms.ReturnString, ByVal SCode As SCode, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean)

Error 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
index	必需的。与此事件相关的 MultiPage 的页索引。
Number	必需的。指定控件用来标识该错误的唯一的值。
Description	必需的。错误的文字描述。
SCode	必需的。为错误规定一个 OLE 状态码 。低 16 位规定一个表示 Number 参数的值。
Source	必需的。标识初始化该事件的控件的字符串。
HelpFile	必需的。指定了描述该错误的帮助文件的全路径名。
HelpContext	必需的。规定含有该错误描述的帮助文件主题的上下文 ID。
CancelDisplay	必需的。指定是否在消息框中显示该错误串。
说明

为 Error 事件编写的代码决定了该控件如何响应这个错误状态。

处理错误状态的能力随应用程序的不同而不同。当一个错误发生了应用程序不被装被处理时 Error 事件被初始化。


KeyDown， KeyUp 事件
KeyDown, KeyUp 事件

按下和释放某键时该事件依次发生。按键时发生 KeyDown，而释放键时发生 KeyUp。

语法

Private Sub object_KeyDown( ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As fmShiftState)

Private Sub object_KeyUp( ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As fmShiftState)

KeyDown 和 KeyUp 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
KeyCode	必需的。标识被按下或释放的键的码的整数。
Shift	必需的。SHIFT , CTRL 和 ALT 键的状态。
设置

Shift 的设置如下：

常数	值	说明
fmShiftMask	1	SHIFT 键被按下。
fmCtrlMask	2	CTRL 键被按下。
fmAltMask	4	ALT 键被按下。
说明

当在一个运行的窗体上按某键时，KeyDown 事件发生，此时那个窗体或窗体上的某个控件具有焦点。KeyDown 和 KeyPress 事件交替重复发生，直至释放此键，此刻 KeyUp 事件发生。这个具有焦点的窗体或控件接收所有的键盘操作。只有没有控件的窗体，或所有可视控件全部失效的窗体才可能具有焦点。

这些事件也发生在发送一击键到一个窗体或控件的时候，无论是在一个宏里面采用了 SendKeys 动作，还是在 Visual Basic 中采用了 SendKeys 语句。

KeyDown 和 KeyUp 事件典型用于两者间的识别和区别：

• 	扩充的字符键，比如功能键。

• 定位键，如 HOME , END , PAGEUP , PAGEDOWN , UP ARROW , DOWN ARROW , RIGHT ARROW , LEFT ARROW 和 TAB 键等等。

• 	组合键和标准键盘变更键 (SHIFT, CTRL 和 ALT)。

• 	数字键盘和键盘数字键。

在下面情况下，KeyDown 和 KeyUp 事件不发生：

• 	在带有命令按钮其 Default 属性为 True 的窗体上按 enter 键。

• 	在带有命令按钮其 Cancel 属性为 True 的窗体上按 esc 键。

KeyDown 和 KeyPress 事件发生在按下或发送一 ANSI 键时。KeyUp 事件发生在按下或发送该键所引起的任何控件事件之后。若一次击键引起了焦点从一个控件移到另外一个控件，对第一个控件发生 KeyDown 事件，此时对第二控件则发生 KeyPress 和 KeyUp 事件。

和键盘相关的事件序列为：

1.	KeyDown

2.	KeyPress

3.	KeyUp

注意  KeyDown 和 KeyUp 事件仅用于窗体上的窗体和控件。为解释 ANSI 字符或找出与被按下的键相对应的 ANSI 字符，用 KeyPress 事件。


KeyPress 事件

当用户按下一个 ANSI 键时该事件发生。

语法

Private Sub object_KeyPress( ByVal KeyANSI As MSForms.ReturnInteger)

KeyPress 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
KeyANSI	必需的。表示标准的数字 ANSI 键代码的整数值。
说明

KeyPress 事件发生在用户在一个运行的窗体上，而且这个窗体或这个窗体上的某个控件具有焦点，按下一个产生一典型的字符（一个 ANSI 键）的键的时候。这个事件可以发生在该键被释放之前，也可以发生在该键被释放之后。这个事件也发生在发送一 ANSI 键操作到窗体或控件的时候，无论是在一个宏里面采用 SendKey 动作，还是在 Visual Basic 用 SendKeys 语句。

KeyPress 事件发生在下列这些键中的任意一个被按下时：

• 	任何可打印的键盘字符。

• 	CTRL 和来自标准字母表的字符的组合。

• 	CTRL 和任何特殊字符的组合。

• 	BACKSPACE。

• 	ESC。

在下面情况下，KeyPress 事件不发生：

• 	按下 TAB 键。

• 	按下 ENTER 键。

• 	按任何箭头键。

• 	引起焦点在控件之间移动的键操作。

注意   BACKSPACE 键是 ANSI 字符集的一部分，而 DELETE 键不是。在一个控件中用 BACKSPACE 删除一个字符引发 KeyPress 事件；而用 DELETE 删除一个字符则不引发 KeyPress 事件。

当按住不放产生 ANSI 键代码的键，KeyDown 和 KeyPress 事件交替重复发生。当释放此键，KeyUp 事件发生。这具有焦点的窗体或控件接收所有的击键。只有没有控件的窗体或者它的所有的可视控件都失效的窗体才可能有焦点。

KeyPress 事件的缺省的动作是处理对应于被按下的键的事件代码。KeyANSI 指出了对应于被按下的键或组合键的 ANSI 字符。KeyPress 事件把每个字符的大写和小写解释为互相独立的键码，就象两个独立的字符。

为了响应键盘的物理状态，或处理 KeyPress 事件无法辨认的键操作，比如功能键、定位键、或这些键与键盘更改键（ALT , SHIFT 或 CTRL）的任意组合，要使用 KeyDown 和 KeyUp 事件过程。

和键盘相关的事件有：

1.	KeyDown

2.	KeyPress

3.	KeyUp


Layout 事件

当一个窗体、Frame 或 MultiPage 改变大小时该事件发生。

语法

对于 MultiPage
Private Sub object_Layout( index As Long)

对于所有其它控件
Private Sub object_Layout( )

Layout 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
index	必需的。在改变大小的 MultiPage 中的页索引。
说明

Layout 事件的缺省的动作是计算控件的新的位置并重画屏幕。改变控件大小可初始化 Layout 事件。

对支持 AutoSize 属性的控件，当 AutoSize 改变控件大小时，会初始化 Layout 事件。当用户改变了影响控件大小的属性的值，这样的事就会发生。例如，增加 TextBox 或 Label 的 Font 大小，能明显地改变控件尺寸，并初始化 Layout 事件。


MouseDown，MouseUp 事件
MouseDown, MouseUp 事件

用户单击鼠标按钮时发生。用户按下鼠标按钮时发生 MouseDown 事件；用户释放鼠标键时发生 MouseUp 事件。

语法

对于 MultiPage, TabStrip
Private Sub object_MouseDown( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Private Sub object_MouseUp( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

对于其它控件
Private Sub object_MouseDown( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Private Sub object_MouseUp( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

MouseDown 和 MouseUp 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
index	必需的。发生特定事件的 MultiPage 和 TabStrip 中的页索引或标签索引。
Button	必需的。标识引起该事件的鼠标键的整型值。
Shift	必需的。规定 SHIFT , CTRL 和 ALT 的状态。
X, Y	必需的。窗体、Frame 或 Page 的位置的横坐标与纵坐标，以点为单位，从左边缘或顶部计数。
设置

Button 的设置如下：

常数	值	说明
fmButtonLeft	1	按下左键。
fmButtonRight	2	按下右键。
fmButtonMiddle	4	按下中键。
Shift 的设置如下：

部分	说明
1	按下 SHIFT 键。
2	按下 CTRL 键。
3	同时按下 SHIFT 和 CTRL 键。
4	按下 ALT 键。
5	同时按下 ALT 和 SHIFT 键。
6	同时按下 ALT 和 CTRL 键。
7	同时按下 ALT , SHIFT 和 CTRL 键。
标识键盘修改键的常量：

常数	值	说明
fmShiftMask	1	检测 SHIFT 键的标记。
fmCtrlMask	2	检测 CTRL 键的标记。
fmAltMask	4	检测 ALT 键的标记。
说明

对于 MultiPage，MouseDown 事件发生在用户在控件上按下鼠标按钮时。

对于 TabStrip，索引参数标识用户单击的标签。索引为 -1，表示用户没有单击标签。例如，在控件的右上角没有标签，单击右上角将索引值置为 -1。

对于窗体，在空白区、记录选择器、或滚动条上按下和松开鼠标按钮就产生 MouseDown 和 MouseUp 事件。

有鼠标有关的事件序列：

1.	MouseDown

2.	MouseUp

3.	Click

4.	DblClick

5.	MouseUp

MouseDown 或者 MouseUp 事件过程规定了按下或松开鼠标按钮时应发生的动作。 MouseDown 和 MouseUp 事件能够区别鼠标的左、右、中按钮。也可以为使用 SHIFT , CTR 和 ALT 键盘更改键的鼠标—键盘组合编写代码。

如果在鼠标箭头在窗体或控件上时按下鼠标按钮，该对象“捕捉”鼠标并接收所有的鼠标事件，直到并包含最后的 MouseUp 事件。这意味着鼠标事件返回的鼠标箭头的 X，Y 坐标不会总在接收它们的对象的边界之内。

如果鼠标按钮被连续按下，捕捉鼠标的对象接收所有的连续的鼠标事件，直到所有的按钮被释放。

用 Shift 参数标识在 MouseDown 或 MouseUp 事件发生时 SHIFT , CTRL 和 ALT 的状态。例如，CTRL 和 ALT 同时被按下，Shift 的值为 6。


MouseMove 事件

鼠标移动时该事件发生。

语法

对于 MultiPage, TabStrip
Private Sub object_MouseMove( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

对于其它控件
Private Sub object_MouseMove( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

MouseMove 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
index	必需的。在与此事件相关的 MultiPage 或 TabStrip 中的页或标签的索引号。
Button	必需的。标识鼠标按钮状态的整型值。
Shift	必需的。规定 SHIFT , CTRL 和 ALT 的状态。
X, Y	必需的。从控件的左边缘或顶测量的以点为单位的位置坐标。
设置

index 参数规定了被单击的页。-1 表示用户没有单击任何页或标签。

Button 的设置如下：

值	说明
0	按钮未被按下。
1	按下左键。
2	按下右键。
3	同时按下左—右键。
4	按下中键。
5	同时按下左—中键。
6	同时按下中—右键。
7	三个按钮全都按下。
Shift 的设置如下：

值	说明
1	按下 SHIFT 键。
2	按下 CTRL 键。
3	同时按下 SHIFT 和 CTRL 键。
4	按下 ALT 键。
5	同时按下 ALT 和 SHIFT 键。
6	同时按下 ALT 和 CTRL 键。
7	同时按下 ALT , SHIFT 和 CTRL 键。
用下面的常量分别表示键盘修改键：

常数	值	说明
fmShiftMask	1	检测 SHIFT 的标记。
fmCtrlMask	2	检测 CTRL 的标记。
fmAltMask	4	检测 ALT 的标记。
说明

MouseMove 事件用于窗体，窗体上面的控件和标签。

当鼠标箭头横跨对象移动时 MouseMove 事件连续发生。除非别的对象已经捉住了鼠标，否则每当鼠标在其边界之内，对象总要辨别 MouseMove 事件。

移动窗体也能产生 MouseMove 事件，即使鼠标不动。当窗体在箭头的下面移动，MouseMove 事件便产生。如果一个宏或者事件过程移动窗体以响应 MouseMove 事件，该事件可连续产生（级联的）MouseMove 事件。

如果两个控件挨得很近，鼠标箭头很快便越过了两控件之间的空间，对于这个空间 MouseMove 事件不发生。在这种情况下，需要在两个控件中响应 MouseMove 事件。

可用 Button 参数返回的值标识鼠标按钮的状态。

用 Shift 参数标识 MouseMove 事件发生时的 SHIFT 键、CTRL 键和 ALT 键的状态。例如，同时按下 CTRL 和 ALT 键，Shift 的值为 6。

注意   可用 MouseDown 和 MouseUp 事件过程响应按下和释放鼠标按键引起的事件。


RemoveControl 事件

当从容器中删去一个控件时该事件发生。

语法

对于 MultiPage
Private Sub object_RemoveControl( index As Long, ctrl As Control)

对于所有其它控件
Private Sub object_RemoveControl( ctrl As Control)

RemoveControl 事件的语法有以下几个部分：

部分	说明
object	必需的。合法的文件名。
index	必需的。包含被删控件的 MultiPage 中的页索引。
ctrl	必需的。被删除的控件。
说明

该事件发生在一个控件从窗体中被删除时，而不是在由于窗体关闭而被控件卸载的时候。


Scroll 事件

滚动框被重新定位时该事件发生。

语法

对于 ScrollBar
Private Sub object_Scroll( )

对于 MultiPage
Private Sub object_Scroll( index As Long, ActionX As fmScrollAction, ActionY As fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)

对于 Frame
Private Sub object_Scroll( ActionX As fmScrollAction, ActionY As fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)

Scroll 事件的语法有以下几个部分：

部分	说明
object	必需的。合法的对象名。
index	必需的。与此事件相关的 MultiPage 中的页索引。
ActionX	必需的。水平方向发生的动作。
ActionY	必需的。垂直方向发生的动作。
RequestDx	必需的。要求滚动条在水平方向上移动的距离，以点 ( points ) 为单位。
RequestDy	必需的。要求滚动条在垂直方向上移动的距离，以点为单位。
ActualDx	必需的。滚动条在水平方向上移动的距离，以点为单位。
ActualDy	必需的。滚动条在垂直方向上移动的距离，以点为单位。
设置

ActionX 和 ActionY 的设置如下：

常数	值	说明
fmScrollActionNoChange	0	没有变化发生。
fmScrollActionLineUp	1	在垂直滚动条上向上移一小距离；在水平滚动条上向左移一小距离。运动等效于在键盘上按 UP 或 LEFT 箭头键来移动滚动条。
fmScrollActionLineDown	2	在垂直滚动条上向下移一小距离；在水平滚动条上向右移一小距离。运动等效于在键盘上按 DOWN 或 RIGHT 箭头键来移动滚动条。
fmScrollActionPageUp	3	在垂直滚动条上向上移一页；在水平滚动条上向左移一页。运动等效于在键盘上按 PAGE UP 键来移动滚动条。
fmScrollActionPageDown	4	在垂直滚动条上向下移一页；在水平滚动条上向右移一页。运动等效于在键盘上按 PAGE DOWN 键来移动滚动条。
fmScrollActionBegin	5	垂直滚动条的项；水平滚动条的左端。
fmScrollActionEnd	6	垂直滚动条的底；水平滚动条的右端。
fmScrollActionPropertyChange	8	或者是 ScrollTop 属性变了，或者是 ScrollLeft 的值变了。移动的方向和距离取决于变化了的属性及其新值。
fmScrollActionControlRequest	9	控件请求它的容器滚动。移动的距离取决于特定的控件和有关的容器。
fmScrollActionFocusRequest	10	用户移动到不同的控件。移动的距离取决于选中的控件的地方，一般来说有移动选中的控件的作用，所以这是用户完全看得见的。
说明

与窗体、Frame 或 Page 有关的 Scroll 事件返回下列参数：ActionX , ActionY , ActualX 和 ActualY。ActionX 和 ActionY 标识发生的动作。ActualX 和 ActualY 标识滚动框移动的距离。

缺省的动作是计算滚动框的新位置，然后再滚动到那个位置。

对于窗体、Frame 和 Page，使用Scroll 方法可以初始化 Scroll 事件。用户移动滚动框的办法也能产生 Scroll 事件。

和一独立的 ScrollBar 相关的 Scroll 事件反映的是用户在任何方向移动滚动框。通过代码改变 ScrollBar 的值不能初始化这个事件；通过用户单击 ScrollBar 的某些部分而不是滚动框，改变了 ScrollBar 的值，也不能初始化这个事件。


SpinDown，SpinUp 事件
SpinDown, SpinUp 事件

用户单击向下或向左的旋转按钮箭头时发生 SpinDown 事件。用户单击向上或向右的旋转按钮箭头时发生 SpinUp 事件。

语法

Private Sub object_SpinDown( )

Private Sub object_SpinUp( )

SpinDown 和 SpinUp 事件的语法有以下几个部分：

部分	说明
object	必需的。合法的对象。
说明

SpinDown 事件减少 Value 属性。SpinUp 事件增加 Value 属性。


Zoom 事件

当 Zoom 属性的值改变时该事件发生。

语法

对于 Frame
Private Sub object_Zoom( Percent As Integer)

对于 MultiPage
Private Sub object_Zoom( index As Long, Percent As Integer)

Zoom 事件的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
index	必需的。与此事件相关的 MultiPage 中的页索引。
Percent	必需的。窗体放大的百分比。有效值范围为 10％ 到 400％。
说明

Zoom 属性值表示该窗体或 Page 的大小如何变化。这个属性的值表示了该控件的大小相对于它当前的大小应当如何变化。小于 100 的值使该窗体的显示尺寸缩小；大于100 的值使该窗体的显示尺寸放大。

可设置该属性为 10 到 400 的任意整数。


Add 方法

在 TabStrip 或 MultiPage 中添加或插入一个 Tab 或 Page，或通过它的程序设计标识符 ( ProgID ) 在页或窗体中添加控件。

语法

对于 MultiPage, TabStrip
Set Object = object.Add( [ Name [,  Caption [,  index]]])

对于其它控件
Set Control = object.Add(  ProgID [,  Name [,  Visible]])

Add 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
Name	可选的。规定被添加的对象的名字。如果没有指定名字，系统根据应用该窗体的应用程序的规则产生一缺省的名字。
Caption	可选的。规定在标签或控件上出现的标题。如果没有规定标题，系统根据应用该窗体所属的应用程序的规则产生一缺省的标题。
index	可选的。表示页或标签在 Pages 或 Tabs 集合中的位置。若没有规定索引，系统将页或标签扩充至 Pages 或 Tabs 集合的末尾，并赋于它相应的索引值。
ProgID	必需的。程序设计标识符。标识对象类的没有空格的文本串。ProgID 的标准语法是 <Vendor>.<Component>.<Version>。ProgID 被映象到类标识符 (CLSID)。
Visible	可选的。若对象为可见的（缺省）即为 True。若对象为隐藏的即为 False。
设置

单个控件的 ProgID 值：

CheckBox	Forms.CheckBox.1
ComboBox	Forms.ComboBox.1
CommandButton	Forms.CommandButton.1
Frame	Forms.Frame.1
Image	Forms.Image.1
Label	Forms.Label.1
ListBox	Forms.ListBox.1
MultiPage	Forms.MultiPage.1
OptionButton	Forms.OptionButton.1
ScrollBar	Forms.ScrollBar.1
SpinButton	Forms.SpinButton.1
TabStrip	Forms.TabStrip.1
TextBox	Forms.TextBox.1
ToggleButton	Forms.ToggleButton.1
说明

对 MultiPage 控件，Add 方法返回一 Page 对象。对于 TabStrip，它返回 Tab 对象。集合.的第一个 Page 或 Tab 的索引值为 0，第二个 Page 或 Tab的索引值为 1，以此类推。

对于一个对象的 Controls 集合，Add 方法返回一个和符合规定的 ProgID 的控件。AddControl 事件发生在该控件被添加之后。

下面的语法将返回在设计阶段添加的控件的 Text 属性。

userform1.thebox.text

若在运行时添加一个控件，必须用惊叹号语法引用该控件的属性。例如，返回在运行时添加的控件的 Text 属性，用下面的语法：

userform1!thebox.text

注意  在运行时可以改变控件的 Name 属性，但这个控件一定要是运行时用 Add 方法添加的。


AddItem 方法

对于单列的列表框或组合框，在表中增加一项。对于多列的列表框或组合框，在表中增加一行。

语法

Variant = object.AddItem( [ item [,  varIndex]])

AddItem 方法的语法有以下几个部分：

部分	说明
object	必需的。合法对象。
Item	可选的。规定添加的项和行。第一个项或行的号为 0；第二个项或行的号为 1，以此类推。
varIndex	可选的。新的项或行在对象中的位置，用整数表示。
说明

如果提供一个有效的 varIndex 的值，AddItem 方法就把项或行放在列表中的那个位置。如果忽略 varIndex，此方法就把项或行添加在列表的末尾。

varIndex 的值不能大于 ListCount 属性的值。

对于多列 ListBox 或者 ComboBox，AddItem 插入一个完整的行，也就是，它为此控件的每一列都插入一个项。为了给第一列后面的项赋值，可用 List 或 Column 属性来规定项的行和列。

如果控件绑定上数据以后，AddItem 方法将会失败。

注意  用 List 可以同时在 ComboBox 或 ListBox 中添加不止一行。


Clear 方法

从一个对象或集合中删去所有对象。

语法

object.Clear

Clear 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
说明

对于 MultiPage 或 TabStrip，Clear 方法各别地删去页和标签。

对于 ListBox 或 ComboBox，Clear 方法删去表中所有的项。

对于 Controls 集合，Clear 删除在运行时用 Add 方法创建的控件。对于在设计时创建的控件使用 Clear 将会出错。

如果控件绑定上数据以后，Clear 方法将会失败。


Copy 方法

将对象的内容复制到剪贴板上。

语法

object.Copy

Copy 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
说明

原始内容仍保留在该对象里面。

实际复制的内容取决于这个对象。例如，在 Page 上，Copy 方法复制当前选中的控件（可以不止一个）。在 TextBox 或 ComboBox 上，它复制当前被选中的文本。

对于窗体、Frame 或 Page，Copy 方法复制当前活动的控件。


Cut 方法

从一个对象中删除选好的信息并将它送达剪贴板上。

语法

object.Cut

Cut 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
说明

对于 ComboBox 或 TextBox，Cut 方法将当前选好的控件中的文本移至剪贴板。这个方法不要求此控件具有焦点。

在 Page、Frame 或窗体中，Cut 将当前选好的控件移至剪贴板。这个方法只移动在运行时创建控件。


DropDown 方法

显示 ComboBox 的列表区。

语法

object.DropDown

DropDown 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
说明

在组合框中使用 DropDown 方法打开组合框中的列表。


GetFormat 方法

返回一个整数值，反映规定的数据格式.是否在 DataObject 上。

语法

Boolean = object.GetFormat( format)

GetFormat 方法的语法有以下几个部分：

部分	说明
object	必须的。一个合法对象。
format	必须的。用来表示可能存在于 DataObject 之中特定的格式的整数或字符串。如果特定的格式存在于 DataObject 之中，则 GetFormat 返回 True。
设置

format 的设置如下：

值	描述
1	文本格式
字符串或任何非1的整数	从 SetText 传递到 DataObject 的用户自定义 DataObject 格式
说明

GetFormat 方法在 DataObject 的当前格式列表中检索一个格式。如果该格式在 DataObject 之中，GetFormat 返回 True；否则 GetFormat 返回 False。

目前，DataObject 只支持文本格式。


GetFromClipboard 方法

从剪贴板复制数据到 DataObject。

语法

String = object.GetFromClipboard( )

GetFromClipboard 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
说明

DataObject 包含多个数据项目，但是每个项目必须具有不同的格式。例如，DataObject 可能包含一个文本项目和具有自定义格式的一个项目；但是不能包含两个文本项目。


GetText 方法

用特定的数据格式在 DataObject 中检索一文本串。

语法

String = object.GetText( [ format])

GetText 方法的语法有以下几个部分：

部分	说明
object	必须的。一个合法的对象名。
format	可选的。用来表示要从 DataObject 中检索的数据的格式的字符串或整数。
设置

format 的设置如下：

值	说明
1	文本格式。
字符串或任何大于 1 的整数	从 SetText 传递到 DataObject 的用户自定义的 DataObject 格式。
说明

DataObject 支持多种格式，但只支持每种格式只有一个数据项。例如，DataObject 可能包含一个文本项和一个自定义格式的项；但不能包含两个文本项。

如果不规定格式，GetText 方法要求从 DataObject 中得到文本格式的信息。


Item 方法

返回集合的一个成员，无论是它的位置，还是它的名字。

语法

Set Object = object.Item(  collectionindex)

Item 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
collectionindex	必需的。集合中成员的位置或索引。
设置

collectionindex 可以是字符串，也可以是整数。如果它是个字符串，它必须是一个有效的成员名。如果它是一个整数，其最小值为 0，而最大值比集合中的项目数少一。

说明

如果规定的索引和名字是无效的，则出错。


Move 方法

移动一个窗体或控件，或者移动在 Controls 集合中的所有控件。

语法

对于窗体或控件
object.Move( [Left [,  Top [,  Width [,  Height [,  Layout]]]]])

对于 Controls 集合
object.Move( X, Y)

Move 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
Left	可选的。Single 数据类型，以点为单位，表示对象左边缘的横坐标。
Top	可选的。Single 数据类型，以点为单位，表示对象上边缘的纵坐标。
Width	可选的。Single 数据类型，以点为单位，表示对象的宽度。
Height	可选的。Single 数据类型，以点为单位，表示对象的高度。
Layout	可选的。布尔量，表示在这次移动之后控件的父对象是否初始化 Layout 事件。其缺省值为 False 。
X, Y	必需的。单精度值，以点为单位，它规定了从Controls 集合中的每一个控件的当前的水平和垂直位置的变化量。
设置

Left , Top , Width , Height , X 和Y 参数的最大值和最小值随应用程序的不同而不同。

说明

对于窗体和控件，可以移动一个选择到相对于该选择所在的窗体的边缘的特定的地方。

可以利用命名参数，或者可以输入位置参数。如果用命名的参数，可以用任意的次序列出这些参数；如果不用命名参数，必须用上面语法部分给出的顺序输入这些参数，用逗号来标识没有规定的参数的相对位置。任何未规定的参数都保持其原值不变。

对于 Controls 集合，可以将此集合中的所有控件从它们当前在窗体、Frame 或 Page 中的位置移动一规定的距离。


Paste 方法

把剪贴板上的内容传送到一个对象。

语法

object.Paste

Paste 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
说明

粘贴到 ComboBox 或者 TextBox 中的数据当作文本来处理。

粘贴方法若用于窗体，可将任何对象粘贴到窗体上。


PutInClipboard 方法

将数据从 DataObject 移到剪贴板上。

语法

object.PutInClipboard

PutInClipboard 方法的语法有以下几个部分：

部分	说明
object	必需。一个合法对象。
说明

PutInClipboard 方法将文本格式的 DataObject 的内容替换剪贴板的内容。


RedoAction 方法

其作用与当今大多数撤消动作相反。

语法

Boolean = object.RedoAction

RedoAction 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
说明

重复命令取最后一个撤消的相反结果，这个撤消动作不一定是最后一个采取的动作。不是所有的操作都能撤销的。

例如，往 TextBox 中粘贴文本之后，然后选择撤消命令删除这段文本，那么用重复命令又可以把这段文本放回去。

注意  若 CanRedo 属性为 False，在用户界面上重复命令无效，代码中的 RedoAction 方法也无效。

如果 RedoAction 成功，它返回 True。


Remove 方法

从集合中删去一个成员，或者从 Frame，Page 或窗体中删去一个控件。

语法

object.Remove(  collectionindex)

Remove 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
collectionindex	必需的。成员在集合内的位置，或索引。可以接受数字，也可接受字符串。如果值是数值，最小值为 0，最大值比集合中的成员数少一。若值为字符串，它必须符合合法的成员名。
说明

此方法只删除在运行时添加的任何控件。但是，如果想删除在设计时添加的控件，则会出错。


RemoveItem 方法

从列表框或组合框的列表中删去一行。

语法

Boolean = object.RemoveItem(  index)

RemoveItem 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
index	必需的。规定要删除的行。第一行的行号为 0，第二行的行号为 1，以此类推。
如果 ListBox 是数据被连接的（也就是，当 RowSource 属性为 ListBox 规定了数据源），此方法不能够从这张表中删去一行。


Repaint 方法

重画窗体或页，更新显示。

语法

Boolean = object.Repaint

Repaint 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
说明

倘若一个对象的内容或者外貌严重地改变了，而且不想等待到系统自动重画这个区域。那么 Repaint 方法很有用。


Scroll 方法

移动对象的滚动条。

语法

object.Scroll( [ ActionX [,  ActionY]])

Scroll 方法的依法有以下几个部分：

部分	说明
object	必需的。一个合法的对象名。
ActionX	可选的。标识发生在水平方向的动作。
ActionY	可选的。标识发生在垂直方向的动作。
设置

ActionX 和 ActionY 的设置如下：

常数	值	说明
fmScrollActionNoChange	0	在规定的方向上没有滚动。
fmScrollActionLineUp	1	在垂直滚动条上向上移动，或者在水平滚动条上向左移动。运动等效于在键盘上按 up 或 left 箭头键来移动滚动条。
fmScrollActionLineDown	2	在垂直滚动条上向下移动，或者在水平滚动条上向右移动。运动等效于在键盘上按 down 或 right 箭头键来移动滚动条。
fmScrollActionPageUp	3	在垂直滚动条上向上移动一页，或在水平滚动条上向左移动一页。运动等效于在键盘上按 PAGE UP 来移动滚动条。
fmScrollActionPageDown	4	在垂直滚动条上向下移动一页，或在水平滚动条上向右移动一页。运动等效于在键盘上按 PAGE DOWN 来移动滚动条。
fmScrollActionBegin	5	移动到垂直滚动条的顶，或移动到水平滚动条的左端。
fmScrollActionEnd	6	移动到垂直滚动条的底部，或移动到水平流动条的右端。
说明

Scroll 方法应用出现在比显示区大的窗体、Frame 或 Page 上的滚动条。此方法不用在独立的 ScrollBar 或者出现在 TextBox 上的滚动条。


SetDefaultTabOrder 方法

用缺省的自顶向下和自左向右的 Tab 键顺序来为窗体上的每一个控件设定 TabIndex 属性。

语法

object.SetDefaultTabOrder

SetDefaultTabOrder 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法对象。
说明

Microsoft 窗体设置的 Tab 键次序是从窗体左上角的控件开始向右移动。离窗体左边缘越近的越是在 Tab 键次序的前头。如果一个以上的控件离窗体左边界同等距离，那么 Tab 键次序的值便自顶向下地分配，谁在上面谁就在前面。


SetFocus 方法

将焦点移动到对象的这个样品。

语法

object.SetFocus

SetFocus 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
说明

若设置焦点失败，焦点又回到原来的对象上，并产生一个错误。

在缺省情况下，设置焦点到一控件并不激活该控件的窗口，或者把它放到别的控件的上面。

SetFocus 方法对于空的 Frame 以及含有别的控件的 Frame 都有效。空的 Frame 得到焦点归自己，任何后续的键盘事件都用于该 Frame。在包含其它控件的 Frame 中，焦点移到该 Frame 中的第一个控件，后续的键盘事件皆作用于拥有焦点的控件。


SetText 方法

用特定的数据格式复制文本串到 DataObject。

语法

object.SetText(  StoreData [,  format])

SetText 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
StoreData	必需的。定义存储在 DataObject 的数据。
format	可选的。规定 StoreData 格式的整数或字符串。从DataObject 中检索数据时，这个格式标识需要检索的数据段。
设置

format 的设置如下：

值	描述
1	文本格式。
字符串或非 1 的整数值	用户自定义的 DataObject 格式。
说明

DataObject 按照数据的格式存储数据。当用户提供一字符串，DataObject 在特定的格式下保存该文本。

如果 DataObject 含有和新数据同样格式的数据，那么新数据将替换 DataObject 中现有的数据。如新数据是新格式，那么新数据与新格式一起被添加到 DataObject 中，而原先存在的数据完好无损。

如果没有规定格式，SetText 方法将 Text 格式赋予文本串。如果规定了一个新格式，DataObject 将新格式登记在系统中。


StartDrag 方法

初始化对于 DataObject 的拖放操作。

语法

fmDropEffect=Object.StartDrag([Effect as fmDropEffect])

StartDrag 方法的语法有以下几个部分：

部分	说明
Object	必需的。一个合法的对象。
Effect	可选的。放置操作对于目标控件的作用。
设置

Effect 的设置如下：

常数	值	说明
fmDropEffectNone	0	没有复制或移动拖放源到拖放目标。
fmDropEffectCopy	1	复制拖放源到拖放目标。
fmDropEffectMove	2	移动拖放源到拖放目标。
fmDropEffectCopyOrMove	3	复制或移动拖放源到拖放目标。
说明

拖动动作始于当前指针位置以及当前键盘状态.，而终于用户释放鼠标按键。拖放操作的作用取决于为放置目标选择的作用。

例如，控件的 MouseMove 事件可能包含 StartDrag 方法。当用户单击控件并移动鼠标，则鼠标箭头改变以示 Effect 对于放置目标是否合法。


UndoAction 方法

与最近的动作（必须是支持撤消命令的）相反的动作。

语法

Boolean = object.UndoAction

UndoAction 方法的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
说明

用户界面上的撤消命令使用 UndoAction 方法。例如，若将文本粘贴到 TextBox，可用 UndoAction 方法来删除这文本，并重新储存 TextBox 的原先的内容。

不是所有的用户的动作都可以撤销。如果动作不能撤销，跟在这个词动作后面的撤消命令也就无效。

注意  如果 CanUndo 属性为 False，则用户界面上的撤消命令便无效，并且代码中的 UndoAction 也无效。

若 UndoAction 用于窗体，对当前记录做的所有改变都丢失。若 UndoAction 用于控件，只有该控件自身受到影响。

必须在窗体或控件被更新之前使用这个方法。可能想在窗体的 BeforeUpdate 事件中，或者控件的 Change 事件中包含 UndoAction 方法。

UndoAction 可以代替 SendKeys 语句，在事件过程中发送一个 ESC 的值。


ZOrder 方法

将对象放在 Z_顺序的前面或背后。

语法

object.ZOrder( [ zPosition])

ZOrder 方法语法包含以下部分：

部分	说明
object	必需的。一个合法的对象。
zPosition	可选的。一个控件在容器的 Z_顺序的位置—前面还是后面。
设置

zPosition 的设置如下：

常量	值	说明
fmTop	0	把控件放在 Z_顺序之前。该控件就会出现在其它控件的上面（缺省值）
fmBottom	1	把控件放在 Z_顺序的后面。该控件出现在其它控件的下面。
说明

Z_顺序决定了当几个窗体和控件出现在用户面前时它们如何重叠。在 Z_顺序后面的项被更靠近的项遮盖；在 Z_顺序前面的项总出现在后面的项的上面。当 zPosition 参数被略去，对象便被带到了前面。

在设计时用“置前”或“置后”命令设置 Z_顺序。“置前”与使用 ZOrder 方法将对象放在 Z_顺序之前是等效的。“置后”等效于用 ZOrder 方法将对象放在 Z_顺序之后。

这个方法不影响 Controls 集合中控件的内容或顺序。

注意  叠放的命令如“移至底层”或“置前”，不能重复或撤消。例如，若选择一个对象并单击快捷菜单上的“向后移动”，想要重复或撤消这个动作是不行的。


Accelerator 属性

设置或检索控件的加速键。

语法

object.Accelerator [= String]

Accelerator 属性语法包含以下部分：

部分	说明
object	必需的。一个合法的对象。
String	可选的。用作加速键的字符。
说明

输入一单个字符给了 Accelerator 属性，一个加速键便设计好了。可以在控件的属性表中，也可以在代码中设置 Accelerator。如果该属性值含有好几个字符，则字符串中第一个字母成为 Accelerator 的值。

在使用加速键时，没有可见的反馈（除了焦点）来表明控件启动了 Click 事件。例如，如果加速键用于 CommandButton，用户在界面上看不见被按下去的按钮。然而在用户按加速键时，这按钮接受焦点。

如果加速键用于 Label，在 Tab 键顺序中跟在 Label 后面的控件接受焦点，而不是 Label 自身。


ActiveControl 属性

标识和允许操作具有焦点的控件。

语法

object.ActiveControl

ActiveControl 属性的语法包含以下部分：

部分	说明
object	必需的。一个合法的对象。
说明

ActiveControl 属性为只读属性，它在界面上选择控件时被设置。在设置属性或调用方法的时候，可以用 ActiveControl 来替代控件名。


Alignment 属性

规定控件与其标题的相对位置。

语法

object.Alignment [= fmAlignment]

Alignment 属性语法包含以下部分：

部分	说明
object	必需的。一个合法的对象。
fmAlignment	可选的。标题位置。
设置

fmAlignment 的设置如下：

常量	值	说明
fmAlignmentLeft	0	标题放在控件左边。
fmAlignmentRight	1	标题放在控件右边（缺省）
说明

控件的标题文本是左对齐的。

注意  尽管 Alignment 属性存在于 ToggleButton 之上，但这属性是无效的。在 ToggleButton 上不能设置或返回这个属性的值。


AutoSize 属性

规定对象在显示它整个内容时会不会自动改变尺寸大小。

语法

object.AutoSize [= Boolean]

AutoSize 属性的语法包含以下部分：

部分	说明
object	必需的。一个合法的对象。
Boolean	可选的。控制是否自动改变大小。
设置

Boolean 设置如下：

值	说明
True	控件在显示其完整内容时能自动改变尺寸。
False	控件尺寸保持不变。如果内容超出了控件的区域，则内容受到剪裁（缺省）。
说明

对于有标题的控件，AutoSize 属性规定了控件是否会自动调节大小以显示完整标题。

对于没有标题的控件，这个属性规定了控件是否会自动调节大小以显示保存在控件中的信息。例如，在 ComboBox 中设置 AutoSize 为 True，从而自动设置显示区的宽度以与当前文本长度匹配。

对于单行文本框，设置 AutoSize 为 True，从而自动设置显示区宽度为文本框中文本的长度。

对于不包含文本的多行文本框，设置 AutoSize 为 True，从而自动将文本显示为一列。文本列宽设置为可以容纳这种字体大小中的最宽字母。文本列的高度设置为可以显示 TextBox 中整个文本。

对于包含文本的多行文本框，设置 AutoSize 为 True，从而自动在垂直方向扩大 TextBox 以显示整个文本。而 TextBox 的宽度不变。

注意  当 AutoSize 为 True 时，如果手工改变控件大小，则手工的改变将覆盖先前已由 AutoSize 设置的大小。


AutoTab 属性

规定了当用户在 TextBox 或 ComboBox 的文本框部分输入最大允许字符数时，会不会自动 tab。

语法

object.AutoTab [= Boolean]

AutoTab 属性语法包含以下部分：

部分	说明
object	必需的。一个合法的对象。
Boolean	可选的。规定是否会自动 tab。
设置

Boolean 的设置如下：

值	说明
True	tab发生
False	tab不发生（缺省）
说明

MaxLength 属性规定了在 TextBox 或 ComboBox 的文本框区域内的允许的最大字符数。

因为经常要输入一组字符数，所以要为窗体上的 TextBox 或 ComboBox 规定 AutoTab 属性。一旦用户输入了最大字符数，焦点自动移到 Tab 键顺序中的下一个控件。例如，如果 TextBox 显示总是五个字符长的库存原材料数，可用 MaxLength 规定输入 TextBox 的最大字符数，用 AutoTab 使得用户输入五个字符之后自动 tab 到下一个控件。

对于 AutoTab 的支持随应用程序的不同而不同。不是所有的容器都支持这个属性。


AutoWordSelect 属性

指定是采用一个单词，还是一个字符，作为扩展一个选项的基本单元。

语法

object.AutoWordSelect [= Boolean]

AutoWordSelect 属性的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
Boolean	可选的。指定用于扩展一个选项的基本单元。
设置

Boolean 的设置如下：

值	说明
True	采用一个单词作为基本单元（缺省值）。
False	采用一个字符作为基本单元。
说明

AutoWordSelect 属性指定在 TextBox 或 ComboBox 的编辑区域中，选项如何扩展或压缩。

用户将插入的位置设在一个单词中间，然后扩展此选项，当 AutoWordSelect 为 True，选项包括这整个单词。


BackColor 属性

指定对象的背景色。

语法

object.BackColor [= Long]

BackColor 属性的语法有以下几个部分：

部分	说明
object	必需的。  为一合法的对象。
Long	可选的。  某一值或常量，指定了对象的背景色。
设置

可采用任一整数来表示某一种有效的颜色，也可采用由红、绿、兰三元色素构成的RGB函数来指定一种颜色。每一种色素的值为 0 至 255 之间的任一整数。例如：值为 4966415 的整数或红、绿、兰色值为 15、200、75 的 RGB 函数，两者均代表暗绿兰色。

说明

只有在 BackStyle 属性设为 fmBackStyleOpaque 时，才可看到对象的背景色。


BackStyle 属性

返回或设置对象的背景方式。

语法

object.BackStyle [= fmBackStyle]

BackStyle 属性的语法有以下几个部分：

部分	说明
object	必需的。为一合法对象。
fmBackStyle	可选的。指定控件背景。
设置

fmBackStyle 的设置值为：

常数	值	说明
fmBackStyleTransparent	0	背景为透明。
fmBackStyleOpaque	1	背景为阴暗（缺省值）。
说明

BackStyle 属性决定一个控件是否为透明。若 BackStyle 为 fmBackStyleOpaque，则控件是不透明的，无法看到窗体中控件背后的内容。若 BackStyle 为 fmBackStyleTransparent，则可透过控件看到窗体中控件背后的内容。

注意  BackStyle 对位图的透明性不起作用。欲将位图设为透明，则必须使用图形编辑器，如 Paintbrush。并非所有控件都支持透明的位图。


Bold，Italic，Size，StrikeThrough，Underline，Weight 属性
Bold, Italic, Size, StrikeThrough, Underline, Weight 属性

指定某一显示或打印的窗体中文本的视觉属性。

语法

object.Bold [= Boolean]

object.Italic [= Boolean]

object.Size [= Currency]

object.StrikeThrough [= Boolean]

object.Underline [= Boolean]

object.Weight [= Integer]

Bold，Italic，Size，StrikeThrough，Underline 和 Weight 属性的语法有以下这些部分：

部分	说明
object	必需的。  为一合法对象的名称。
Boolean	可选的。  指定字体模式。
Currency	可选的。  为一指定字体大小的数字。
Integer	可选的。  指定字体模式。
Boolean 的设置如下：

值	说明
True	文本已具有指定的属性（为 bold，italic，size，strikethrough 或 underline markes，或 weight）。
False	文本无指定的属性（缺省值）。
Weight 属性的数值范围为 0 至 1000。若数值为 0，则允许系统选择最佳黑暗度，若数值为 0 至 1000 之间的某一数值，则代表某一特定的黑暗度值，1 为颜色最浅，1000 为颜色最深。

说明

以上属性决定了文本的视觉特性。Bold 属性指定了文本为常用字体或粗体；Italic 属性指定了文本为常用字体或斜体；Size 属性指定了被显示的文本的高度，以磅为单位；Underline 属性指定了文本是否有下划线；StrikeThrough 属性指定了文本是否有删除标记；Weight 属性指定了文本的黑暗度类型。

字体在屏幕上和打印后的效果可能会有所不同，这取决于计算机和打印机。若选择了某一字体，而系统本身没有安装或无法显示字体特有的属性，则 Windows 将会选择一种相似的字体作为替代。该字体会尽可能与所要求的字体相似。

改变 Bold 的值的同时也将改变 Weight 的值。设置 Bold 为 True 的同时，Weight 即被设为 700；将 Bold 设为 False，Weight 同时被设为 400。反之，将 Weight 设为大于 550 的值时，则 Bold 即被设为True；将 Weight 设为小于 550 的值时，则 Bold 即被设为 False。

点大小的缺省值由操作系统设定。


BorderColor 属性

指定对象边框的颜色。

语法

object.BorderColor [= Long]

BorderColor 属性的语法有以下几个部分：

部分	说明
object	必需的。  某一合法对象。
Long	可选的。  为一值或常量，指定对象边框的颜色。
设置

可采用任一整数来代表某一种有效的颜色，也可采用由红、绿、兰三元色素构成的RGB函数来指定一种颜色，每一种色素的数值为 0 至 255 之间的任一整数。例如：数值为 4966415 的整数，或红、绿、兰三元色值为 15、200、75 的 RGB 函数值，两者均代表暗绿兰色。

说明

若欲采用 BorderColor 属性，则必须将 BorderStyle 属性设为除 fmBorderStyleNone 以外的数值。

BorderStyle 采用 BorderColor 来设定边框颜色。SpecialEffect 属性仅采用系统颜色.来设定其边框颜色。对于 Windows 操作系统，系统颜色设置是“控制面板”的一部分，并且在“显示”文件夹中的“外观”选项卡中可以找到。在 Windows NT 3.51 中，系统颜色设置存放在“控制面板”的“颜色”文件夹中。


BorderStyle 属性

指定某一控件或窗体的边框类型。

语法

object.BorderStyle [= fmBorderStyle]

BorderStyle 属性的语法有以下几个部分：

部分	说明
object	必需的。  某一合法对象。
fmBorderStyle	可选的。  指定边框类型。
设置

fmBorderStyle 的设置如下：

常量	值	说明
fmBorderStyleNone	0	控件无可见的边框线。
fmBorderStyleSingle	1	控件有一单线的边框（缺省值）。
对于 ComboBox，Frame，abel，ListBox 或 TextBox的缺省值为 0(None)，对于 Image 缺省值为 1 (Single)。

说明

对于 Frame，若 SpecialEffect 属性为 None，则 BorderStyle 属性被忽略。

只可选用 BorderStyle 或 SpecialEffect 属性中的任一种来指定某一控件的边框，而不能同时采用这两种属性。当其中一属性被设为一非零的值时，则另一属性自动被设为零。例如：若将 BorderStyle 设为 fmBorderStyleSingle，则系统将 SpecialEffect 设为 0 (Flat)；若将 SpecialEffect 设为一非零的值，则系统将 BorderStyle 设为 0。

BorderStyle 采用 BorderColor 指定其边框的颜色。


BoundColumn 属性

标识在多列的 ComboBox 或 ListBox 中的数据的来源。

语法

object.BoundColumn [= Variant]

BoundColumn 属性的语法有以下几个部分：

部分	说明
object	必需的。  某一合法对象。
Variant	可选的。  标识如何选择 BoundColumn 的值。
设置

Variant 的设置如下：

值	说明
0	将 ListIndex 属性的值赋予控件。
1 或者大于 1	将指定的列中的值赋予控件。当采用此属性时，列从一开始计数（缺省值）。
说明

当在某一多列的 ListBox 或 ComboBox 中选择了一行时，BoundColumn 属性标识出将该行的哪一项作为控件的值存储。例如：若各行均包括 8 项，BoundColumn 的值为 3，则系统将当前所选行的第三列中的信息作为该对象的值。

能给用户显示某一数据集，然而存储却不一样，是通过使用 BoundColumn 和 TextColumn 属性，为对象存储不同的却相关联的值。TextColumn 标识在 ComboBox 或 ListBox 中所显示的数据的列；BoundColumn 标识为对象存储的关联数据值的列。例如，你可设置某一多列的 ListBox，其中第一列包括了节日的名称，第二列包括了节日的具体日期。若欲向用户展示节日的名称，可将第一列指定为 TextColumn；若欲储存节日的具体日期，则将第二列指定为 BoundColumn。

若控件与某一数据源，被连接的，则 BoundColumn 所指定的列中的值被存入 ControlSource 属性中命名的数据源中。

ListIndex 中的值保持着被选中的行的行号。例如：若欲知道被选项的所在行，可将BoundColumn 设为 0，被选行中的数值便赋予控件，作为控件的值。请注意，如果你引用某一清单，而其内容可能已经有所改变，则检索的肯定是当前的值，而不是以前存储过的值。

Column, List 和 ListIndex 属性均采用基于 0 的计数方法。即：第一项（行或列）的值为 0，第二项为 1，以此类推。这就意味着若 BoundColumn 为 3，那么你可以采用表达式 Colum(2) 存取存储在该列中的数值。


BoundValue 属性

当控件接受焦点时，其中包含了控件的值。

语法

object.BoundValue [= Variant]

BoundValue属性的语法由这些部分：

部分	描述
object	必要参数。一个有效的对象。
Variant	可选参数。控件的当前状态或内容。
设置值

控件	描述
CheckBox	整数值，指示项是否被选中。
	Null   指示项处在空状态，既没有被选中又没有被清除。
	-1   True。指示项被选中。
	0   False。指示项被清除。
OptionButton	与 CheckBox 相同。
ToggleButton	与 CheckBox 相同。
ScrollBar	界于 Max 和 Min 属性指定的值之间的整数值。
SpinButton	与 ScrollBar 相同。
ComboBox, ListBox	当前选中行的 BoundColumn 中的值。
CommandButton	总是 False。
MultiPage	整数，指示当前活动页。
	零 (0)，指示第一页。最大值是页数减 1。
TextBox	编辑区的文本。
说明

BoundValue 应用于具有焦点的控件。

BoundValue 和 Value 属性的内容绝大多数情况下是相同的。当编辑控件以致于它的值发生改变时，BoundValue 和 Value 的内容在改变动作完成之前是不同的。

改变控件的值时会发生一系列的动作。例如，如果改变 TextBox 中的文本，会发生下列动作：

1.	启动 Change 事件。此时 Value 属性包含着新文本，并且 BoundValue 包含着早先的文本。

2.	启动 BeforeUpdate 事件。

3.	启动 AfterUpdate 事件。BoundValue 和 Value 再一次一致起来，包含着新文本。

BoundValue 不能用于多重选择列表框。


Cancel 属性

返回或设置一数值，以标识某一命令按钮是否是一窗体的 Cancel 按钮。

语法

object.Cancel [= Boolean]

Cancel 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
Boolean	可选的。判定对象是否为 Cancel 按钮。
设置

Boolean 的设置如下：

值	说明
True	CommandButton 是“取消”按钮。
False	CommandButton 不是“取消” 按钮（缺省值）。
说明

任一 CommandButton 或对象，若其执行功能相当于命令按钮，则可被设计为缺省的命令按钮。对于OLE 容器控件，Cancel 属性只给适合作为命令按钮的对象提供。

在窗体中只有一个 CommandButton 可作为 Cancel 按钮。若将某一命令按钮的 Cancel 值设为 True，则窗体上所有的其他对象自动被设为 False。若 CommandButton 的 Cancel 属性被设为 True，并且窗体是一个激活的窗体，用户就可以用鼠标单击此命令按钮，或按 ESC 键，或当此按钮具有焦点时再按 ENTER 键，以执行此键的功能。

Cancel 的典型用法就是允许用户取消那些不想执行的改变，并将窗体返回到原先的状态。

若窗体支持某些不能被撤销的操作（如删除操作），则建议用户将 Cancel 设为缺省按钮。也就是将 Cancel 和 Default 属性均设为 True。


CanPaste 属性

指定在剪贴板中是否有对象支持的数据。

语法

object.CanPaste

CanPaste 属性的语法有以下几个部分：

部分	说明
object	必需的。  某一合法对象。
返回值

CanPaste 属性的返回值为：

值	说明
True	鼠标箭头下的当前对象可接受从剪贴板中粘贴的信息（缺省值）。
False	鼠标箭头下的当前对象不能接受从剪贴板中粘贴的信息。
说明

CanPaste是只读的。

若剪贴板中的数据采用的是当前目标对象所不支持的数据格式，则 CanPaste 属性为 False。例如，若试图将位图粘贴到某个只支持文本的对象中，则 CanPaste 将为 False。


CanRedo 属性

指示最近的撤消操作可否反向执行。

语法

object.CanRedo

CanRedo 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
返回值

CanRedo 属性的返回值：

值	说明
True	最近的撤消操作可反向执行。
False	最近的撤消操作不可反向执行。
说明

CanRedo是只读的。

执行一次重复操作即意味着反向执行一次撤消（两者互相反其道而行之），但这不一定代表重复执行用户的最近一次操作。

下面的用户操作可以解释撤消和重复操作：

1.	改变一个选项按钮的设置；

2.	在一文本框内输入文本；

3.	单击“撤消”按钮，则文本框中的文本内容消失；

4.	单击“撤消”按钮，则选项按钮的设置恢复为原先的设置；

5.	单击“重复”按钮，则选项按钮的设置恢复为改变后的设置；

6.	单击“重复”按钮，则文本框中的文本内容恢复。


CanUndo 属性

指示用户的上一次操作是否可撤销。

语法

object.CanUndo

CanUndo 属性的语法有以下几个部分：

部分	说明
object	必需的。  某一合法对象。
返回值

CanUndo 属性的返回值为：

值	说明
True	用户的最近一次操作可以撤销。
False	用户的最近一次操作不可以撤销。
说明

CanUndo是只读的。

许多用户操作均可通过撤消命令撤销。而 CanUndo 属性则指示了最近一次操作是否可以撤销。


Caption 属性

出现在对象上的，用于标识或描述该对象的描述性文本。

语法

object.Caption [= String]

Caption 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
String	可选的。某一字符串表达式，用以计算标题中的所显示的文本。
设置

控件的缺省设置值是某一基于控件类型的唯一名称。例如，在一个窗体中的第一个命令按钮，其缺省的标题为 CommandButton1。

说明

该文本标识或描述了和它相关的对象。对于按钮和标签，Caption 属性指定了出现在控件上的文本；对于 Page 和 Tab 对象，它指定了出现在标签中的文本。

若一控件的标题太长，则此标题将会被截短。若一窗体的标题太长，标题栏太短，则此标题将带省略号显示。

控件的 ForeColor 属性决定标题中文本的颜色。

提示  若一控件同时具有 Caption 和 AutoSize 属性，则若将 AutoSize 设为 True，控件的大小就会自动调整，以容纳整个标题。


ClientHeight，ClientLeft，ClientTop，ClientWidth 属性
ClientHeight, ClientLeft, ClientTop, ClientWidth 属性

定义某一 TabStrip 显示区域的维数和位置。

语法

object.ClientHeight [ =Single]

object.ClientLeft [ =Single]

object.ClientTop [ =Single]

object.ClientWidth [ =Single]

ClientHeight , ClientLeft , ClientTop 和 ClientWidth 属性的语法有以下几个部分：

部分	说明
object	必需的。  某一合法对象。
Single	可选的。  对于 ClientHeight 和 ClientWidth，以点为单位指定了显示区域的长度和宽度；对于 ClientLeft 和 ClientTo，以点为单位指定了离 TabStrip 的容器的顶或左边缘的距离。
说明

在运行时，ClientLeft , ClientTop , ClientHeight 和 ClientWidth 将自动储存 TabStrip 的内部区域的坐标和维数，该内部区域由 TabStrip 各对象共享。


Column 属性

指定 ListBox 或 ComboBox 中的一个或多个项目。

语法

object.Column( column, row ) [= Variant]

Column 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
column	可选的。取值范围由 0 到总列数少一之间的某一整数。
row	可选的。取值范围由 0 到总行数少一之间的某一整数。
Variant	可选的。指定了欲加载到 ListBox 或 ComboBox 中的一个值、一列值或一个二维数组。
设置

同时指定了行和列的值，则 Column 将对某一指定项进行读写。

仅指定了列的值，则 Column 属性将对对象中当前行中的指定列进行读写。例如：MyListBox.Column(3) 将对 MyListBox 中的第三列进行读写。

Column 从光标处返回一个 Variant。当内置光标 提供了 Variant 的值（例如在采用 AddItem 方法时），则此值为一字符串。当一外部光标提供了 Variant 的值，与该数据相关联的格式不包含在 Variant 内。

说明

通过采用 Column，可将一组合框或列表框中的内容赋于另一控件，如一文本框。例如：可将某一文本框中的 ControlSource 属性值设置为另一列表框的第二列。

当欲引用某一组合框或列表框中的某列，而用户并未做选择，Column 的设置值为 Null。通过调用 IsNull 函数即可查出该条件。

采用 Column，可以将整个的值的二维数组复制到一个控件中去。它的语法允许快速加载一个选择清单，而不是通过 AddItem 逐一加载清单中的每个元素。

注意 当从一个二维数组中复制数据时，Column 将调换控件中数组的内容，以使ListBox1.Column(Y, X) 的内容与 MyArray(X,Y) 中的内容相同。也可通过 List 复制数组，而不用调换。


ColumnCount 属性

指定在列表框或组合框中所显示的列数。

语法

object.ColumnCount [= Long]

ColumnCount 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
Long	可选的。指定了所显示的列数。
说明

若在某公司雇员表中，将列表框的 ColumnCount 属性设置为 3，则一列可列出雇员的姓氏，另一列可列出雇员的名字，第三列可列出雇员的 ID 号码。

将 ColumnCount 设为 0，则显示第 0 列；设为 -1，将显示所有列。对于一 未连结的数据源，最大列数为 10（第 0 列至第 9 列）。

采用 ColumnWidths 属性可设置显示在控件中的各列的宽度。


ColumnHeads 属性

显示列表框，组合框及接受列标题的对象中的列标题所在行。

语法

object.ColumnHeads [= Boolean]

ColumnHeads 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
Boolean	可选的。指定是否显示列标题。
设置

Boolean 的设置如下：

值	说明
True	显示列标题。
False	不显示列标题（缺省值）。
只有在列表被拉下时，组合框中的标题才会被显示。

说明

当系统用数据项中的第一列作为列标题时，该行不可被选择。


ColumnWidths 属性

指定在一多列的组合框或列表框中各列的宽度。

语法

object.ColumnWidths [= String]

ColumnWidths 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
String	可选的。以点为单位，设置列的宽度；设为 -1 或空串，则列宽需要计算。设为 0 则隐藏该列。若欲指定另一种不同的度量单位，则必须包括该度量单位。若为一大于 0 的数则指明了列的宽度值。
设置

若欲把各列分隔开，则采用分号 (;) 作为列表分隔符。或使用在 Windows 控制面板中的区域设置选项所指定的列表分隔符。

ColumnWidths 属性中的任一或全部设置值均可为空串。仅输入列表分隔符而没有预置值便建立一个空串设置。

若在属性页设置为 -1，则该属性页的显示值为空白。

ColumnWidths 为空串或 -1 时，若欲计算列的宽度，则可将控件宽度等分，给予列表中的各列。若所指定的各列宽度的总和大于该控件的宽度时，则在控件内部，列表将左对齐，而最右边的一列或数列不被显示。用户可用水平滚动条来滚动列表，以显示最右边的各列。

由计算产生的列宽度最小值为 72 磅（1 英寸）。欲采用更窄的列，则需指明宽度。

除非特殊指定，通常列宽以点数计算。若欲指定其它度量单位，则需将此单位作为值的一部分。下面的各例指出了以不同单位计算列宽的方法，并描述了在 4 英寸宽，并包含有 3 列的列表框内如何进行设置：

设置	效果
90;72;90	第一列为 90 点（1.25 英寸），第二列为 72 点（1 英寸），第三列为 90 点。
6 cm;0;6 cm	第一列为 6 厘米，第二列被隐藏，第三列为 6 厘米。由于第三列只能被部分显示，因此出现一水平滚动条。
1.5 in;0;2.5 in	第一列为 1.5 英寸，第二列被隐藏，第三列为 2.5 英寸。
2 in;;2 in	第一列为 2 英寸，第二列为1英寸（缺省值），第三列为 2 英寸。由于第三列只能被部分显示，因此出现一水平滚动条。
(Blank)	三列宽度相等（1.33 英寸）。
说明

在组合框中，系统显示由控件中文本框部分的 TextColumn 属性所指派的列。


ControlSource 属性

标识了用于设置或储存控件中 Value 属性的数据位置。

语法

object.ControlSource [= String]

ControlSource 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
String	可选的。指定了连结到控件 Value 属性的工作页单元
说明

ControlSource 属性标识了某一单元或字段；但它不包含存储于该单元或字段中的数据。如果改变控件中的 Value 值，则此改变自动地反映在相连结的单元或字段中。同样地，如果改变相连结的单元或字段中的值，则此改变也自动地反映在控件中的 Value 值中。

不能为 ControlSource 指定其它的控件，否则会产生错误。

ControlSource 的缺省值为一 空字符串。若不是空字符串，则标识了某一相连结的单元或字段。当控件被加载时，该单元或字段中的内容会被自动复制到 Value 属性中。

注意  若 Value 属性为 Null，则由 ControlSource 所标识的位置中将不存在任何数值。


ControlTipText 属性

指定了当用户将鼠标箭头放在控件上但未按下时所显示的文本。

语法

object.ControlTipText [= String]

ControlTipText 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
String	可选的。当用户将鼠标箭头放在控件上时所显示的文本。
说明

ControlTipText 属性可提供用户有关当前运行的窗体中某一控件的提示。该属性可在设计时设定，但仅在运行时由控件显示。

ControlTipText 的缺省值为空字符串。当 ControlTipText 的值被设为空字符串时，该控件将无任何提示。


Count 属性

返回一个集合中的对象个数。

语法

object.Count

Count 属性的语法有以下几个部分：

部分	说明
object	必需的。一个合法的对象。
说明

Count 为只读属性。

请注意，集合中的第一页或第一个标签的索引号为 0，第二页或第二个标签的索引号为 1，依此类推。例如：若一 MultiPage 包含两页，则各页的索引为 0 和 1，Count 的值为 2。


CurLine 属性

指定了控件中的当前行。

语法

object.CurLine [= Long]

CurLine 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
Long	可选的。指定了控件中的当前行。
说明

控件中的当前行即为包含了插入点的行。第一行的行号为 0。

CurLine 属性仅在控件具有焦点时有效。


CurTargetX 属性

在一多行的 TextBox 或 ComboBox 中检索插入点的优先位置。

语法

object.CurTargetX

CurTargetX 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
返回值

CurTargetX属性可以取得首选位置，以海米为单位度量。一海米是 0.0001米。

说明

目标位置是相对于控件的左边缘的。若某行的长度小于 CurTargetX 属性的值，则可将插入点置于该行尾。当用户设置插入点或设置 Curx 属性时，CurTargetX 的值将会改变。CurTargetX 为只读属性。

当对象具有焦点时返回值有效。

当用户滚动多行的 TextBox 或 ComboBox 中的内容时，可使用 CurTargetX 和 CurX 来移动插入点。当用户滚动对象的内容将插入点移到文本的其它行时，CurTargetX 指定了插入点的优选位置。若文本的行长于 CurTargetX 的值时，CurX 将被设置成此优选位置，否则即被设为文本的行尾。


CurX 属性

指示在一多行的 TextBox 或 ComboBox 中插入点的当前水平位置。

语法

object.CurX [= Long]

CurX 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
Long	可选的。指示以 himetrics 为单位计算的当前位置。1 himetric相当于 0.0001 米。
说明

CurX 属性适用于多行的 TextBox 或 ComboBox。当对象具有焦点时，返回值合法。

当用户滚动一多行的 TextBox 或 ComboBox 的内容时，可使用 CurTargetX 和 CurX 来定位插入点。当用户滚动对象的内容，将插入点移到另一行时，CurTargetX 指定了插入点的优选位置。若文本的行长于 CurTargetX 的值时，CurX 将被设成此优选位置，否则即被设为文本的行尾。


Cycle 属性

指定了当用户离开某 Frame 或 Page 的最后一个控件时所应采取的操作。

语法

object.Cycle [= fmCycle]

Cycle 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
fmCycle	可选的。指定了循环是否包括嵌套在 Frame 或 MultiPage 中的对象。
设置

fmCycle 的设置值为：

常数	值	说明
fmCycleAllForms	0	在窗体上的控件以及 Frame 和 MultiPage 控件中的控件上进行的循环，它被显示在当前窗体中。
fmCycleCurrentForm	2	在窗体、Frame 或 MultiPage 中的控件上进行的 循环。焦点将停留在窗体、Frame 或 MultiPage 之中直到被明确设定到窗体、Frame 或 MultiPage 之外一个控件中。
若将 Cycle 设置为一非整数值，则值将被四舍五入为最接近此数的一个整数。

说明

当用户在一个窗体或子窗体内转换焦点时，tab 键顺序指明了控件接收焦点的顺序。当用户从 Tab 键次序内的最后一个控件上跳走时，Cycle 属性决定了将要采取的操作。

当用户从 Tab 键次序内的最后一个控件上跳走时，fmCycleAllForms 设置将焦点传输至该窗体上的下一个 Frame 或 MultiPage 的第一个控件。

当用户从 Tab 键次序内的最后一个控件上跳走时，fmCycleCurrentForm 设置将焦点传输至同一个窗体、Frame 或 MultiPage 的第一个控件。


Default 属性

在一个窗体中设定缺省命令按钮。

语法

object.Default [= Boolean]

Default 属性的语法有以下几个部分：

部分	说明
object	必需的。某一合法对象。
Boolean	可选的。判定该命令按钮是否为缺省按钮。
设置

Boolean 的设置如下：

值	说明
True	CommandButton 是缺省按钮。
False	CommandButton 不是缺省按钮（缺省值）。
说明

当某一 CommandButton 或对象的操作相当于一个命令按钮，则可将其设定为缺省命令按钮。在一个窗体中，只有一个对象可被设为缺省命令按钮。若将某一对象的 Default 属性设为 True，则窗体中的其它对象的 Default 属性则自动被设为 False。

若欲在一个激活的窗体上选择缺省命令按钮，用户可以用鼠标单击此按钮，或当没有其它 CommandButton 具有焦点时按下回车键。当没有其他CommandButton有焦点时，按下回车键仍然会为缺省命令按钮启动 KeyUp 事件。

Default 是为 OLE 容器控件，特别是那些相当于 CommandButton 的控件所提供的。

提示  对于那些支持不能被撤销的操作（如 Delete）的窗体，应考虑将按 Cancel 钮作为缺省命令按钮。若欲实现这一点，则应将 Default 和 Cancel 属性均设为 True。


Delay 属性

指定 SpinButton 或 ScrollBar 上的 SpinUp、 SpinDown 和 Change 事件的延迟。

语法

object.Delay [= Long]

Delay 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Long	可选的。事件之间以毫秒为单位的延迟。
说明

Delay 属性影响当用户在 SpinButton 或 ScrollBar 上多次单击和保持按钮按下时所产生的连续的 SpinUp, SpinDown 和 Change 事件之间的间隔时间。第一个事件会立即发生。对第二个出现事件的延迟等于指定 Delay 值的五倍。这个起始间隔时间易于产生单个事件而不是事件流。

在这个起始间隔时间之后，事件之间的间隔等于指定的 Delay 值。

Delay 的缺省值是 50 毫秒。这就是说，该对象在 250 毫秒（指定值的五倍）之后初始第一个事件并且每个后续的事件都在 50 秒之后初始。


DragBehavior 属性

指定系统是否允许 TextBox 或 ComboBox 的拖—放功能。

语法

object.DragBehavior [= fmDragBehavior]

DragBehavior 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
fmDragBehavior	可选的。指定是否允许拖—放功能。
设置值

fmDragBehavior 的设置值有：

常数	值	描述
fmDragBehaviorDisabled	0	不允许拖─放动作（缺省值）。
fmDragBehaviorEnabled	1	允许拖—放动作。
说明

如果 DragBehavior 属性是允许的，那么在一个文本框或组合框中的拖-放将启动一个在所选文本上的拖-放操作。如果 DragBehavior 是不允许的，那么在一个文本框或组合框中的拖动就进行选择文本。

ComboBox 的下拉部分既不支持拖放处理，也不使它支持该文本内列表项的选择。

DragBehavior 对于 Style 属性设置为 fmStyleDropDownList 的 ComboBox 无效。

注意  可以把 EnterFieldBehavior 属性和 DragBehavior 的作用结合起来以创建大量文本框的风格。


DrawBuffer 属性

指定在编排一个框架使用的屏幕外内存中所设置的象素数。

语法

object.DrawBuffer [= value]

部分	描述
object	必需的。是一个有效对象。
value	从 16,000 到 1,048,576 的一个整数，它等于该对象所能处理的屏幕外的最大象素数。
说明

DrawBuffer 属性指定在重画时一次可以画出的最大象素数。对象实际使用的内存量取决于屏幕的显示分辩率。如果 DrawBuffer 的值设置得大，则性能将会减少。仅当几个大图象重叠时大缓冲区才是有利的。

用 Properties 窗口指定 DrawBuffer 的值。


DropButtonStyle 属性

指定 ComboBox 中放按钮上显示的符号。

语法

object.DropButtonStyle [= fmDropButtonStyle]

DropButtonStyle 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
fmDropButtonStyle	可选的。指定放按钮的外观。
设置值

fmDropButtonStyle 的设置值有：

常数	值	描述
fmDropButtonStylePlain	0	显示一个简单的按钮，没有符号。
fmDropButtonStyleArrow	1	显示一个向下的箭头（缺省值）。
fmDropButtonStyleEllipsis	2	显示一个省略号 ()。
fmDropButtonStyleReduce	3	显示一条水平线，如同一个下划线字符。
说明

为了展示示列表中项目建议使用的设置值是 fmDropButtonStyleArrow。如果想按其它方式使用放按钮，如显示一个对话框，则应指定 fmDropButtonStyleEllipsis, fmDropButtonStylePlain 或 fmDropButtonStyleReduce，并应捕获 DropButtonClick 事件。


Enabled 属性

指定一个控件能否接收焦点和响应用户产生的事件。

语法

object.Enabled [= Boolean]

Enabled 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Boolean	可选的。指明该对象能否响应用户产生的事件。
设置值

Boolean 的设置值有：

值	描述
True	该控件能接收焦点并响应用户产生的事件，而且能通过编码进行访问（缺省值）。
False	不能通过使用鼠标、击键、加速键或热键与该控件交互。通常该控件仍通过编码可访问。
说明

使用 Enabled 属性可使控件有效或无效。无效的控件显示为灰暗的，而有效控件则不这样做。而且，如果控件显示有位图，则每当按钮灰暗时位图也灰暗。如果 Image 的 Enabled 为 False，那么该控件不能启动事件而也不使其灰暗的。

Enabled 和 Locked 属性结合起来能实现如下作用：

• 	如果 Enabled 和 Locked 都为 True，那么该控件在窗体中可以接收焦点并且能正常显现（非暗淡的）。控件中的数据可以复制、但不能编辑。

• 	如果 Enabled 为 True 而 Locked为 False，那么该控件在窗体中可以接收焦点并且能正常显现。控件中的数据可以复制和编辑。

• 	如果 Enabled 为 False 而 Locked 为 True，那么该控件在窗体中不能接收焦点并且是暗淡的。控件中的数据既不能复制也不能编辑。

• 	如果 Enabled 和 Locked 都为 False，那么该控件在窗体中不能接收焦点并且是暗淡的。控件中的数据既不能复制也不能编辑。

可以把 Enabled 和 TabStop 属性的设置值结合起来以防止选择一个带 TAB 键的命令按钮，但仍允许单击该按钮。设置 TabStop 为 False 意味着该命令按钮将不在 tab 键顺序.中出现。不过，如果 Enabled 为 True，只要 TakeFocusOnClick 的设置是 True，则仍然可以单击该命令按钮。

当一些 tab 进入有效的 MultiPage 或 TabStrip时，控件中的第一页或第一个标签将接收这个焦点。如果 MultiPage 或 TabStrip 的第一页或第一个标签无效，则控件中第一个有效的页或标签接收这个焦点。如果 MultiPage 或 TabStrip 的所有页或标签都是无效的，那么该控件也是无效的，而且不能接收这个焦点。

如果 Frame 是无效的，则它包含的全部控件都是无效的。

单击一个无效的 ListBox 不能初始 Click 事件。


EnterFieldBehavior 属性

指定进入 TextBox 或 ComboBox 时的选择行为。

语法

object.EnterFieldBehavior [= fmEnterFieldBehavior]

EnterFieldBehavior 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
fmEnterFieldBehavior	可选的。为期望的选择行为。
设置值

fmEnterFieldBehavior 的设置值有：

常数	值	描述
fmEnterFieldBehaviorSelectAll	0	当进入控件时选择编辑区域的全部内容（缺省）。
fmEnterFieldBehaviorRecallSelection	1	从选择不变开始。看上去，这里使用的是控件最后一次激活时起作用的选择。
说明

当一些 tab 进入控件而不是该空间接收到作为 SetFocus 方法结果的焦点时，EnterFieldBehavior 属性将控制选择文本的方法。随后的 SetFocus，不是选择控件的内容而是使插入点出现在控件编辑区的最后一个字符的后面。


EnterKeyBehavior 属性

定义在 TextBox 中按下 ENTER 键的结果。

语法

object.EnterKeyBehavior [= Boolean]

EnterKeyBehavior 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Boolean	可选的。指定按 ENTER 键的结果。
设置值

Boolean 的设置值为：

值	描述
True	按 ENTER 键创建一个新行。
False	按 ENTER 键把焦点移到按 tab 顺序的下一个对象（缺省）。
说明

EnterKeyBehavior 和 MultiLine 属性是密切相关的。上面所指定的值只适用在 MultiLine 为 True 时。如果 MultiLine 为 False，按 ENTER 键总是把焦点移到按 tab 键顺序的下一个对象，而不考虑 EnterKeyBehavior 的值。

按 CTRL+ENTER 键的作用也依赖于 MultiLine 的值，如果 MultiLine 为 True，按 CTRL+ENTER 键将创建一个新行，而不管 EnterKeyBehavior 的值是什么。如果 MultiLine 为 False，按 CTRL+ENTER 键不起作用。


ForeColor 属性

指定对象的前景色。

语法

object.ForeColor [= Long]

ForeColor 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Long	可选的。确定一个对象前景色的一个值或常数。
设置值

可以使用表示一个有效的颜色任一整数。也可以使用带有红、绿、蓝三元色的 RGB 函数来指定一种颜色。每种元色的值为 0 到 255 间的一个整数。例如，可以指定水鸟蓝的整数值为 4966415，或红、绿、蓝三元色的 15，200，75。

说明

在窗体上对控件使用 ForeColor 属性可以使之易读或者传达某种特定含义。例如，如果一个文本框报告股票的点数，当值下跌到买入限以下时，可以改变文本的颜色。

对于 ScrollBar 或 SpinButton, ForeColor 要设置箭头的颜色。对于 Frame , ForeColor 改变标题的颜色。对于 Font 对象，ForeColor 决定文本的颜色。


GroupName 属性

创建一个互斥的 OptionButton 控件组。

语法

object.GroupName [= String]

GroupName 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效的 OptionButton。
String	可选的。为包含 OptionButton 的组名。对组中所有按钮使用相同的设置，缺省的设置值为一个空字符串。
说明

要创建一个互斥的 OptionButton 控件组，可以把那些按钮放到窗体上的一个 Frame 里，也可以使用 GroupName 属性。由于下列原因 GroupName 的效率更高：

• 	每个组不一定包含一个 Frame。不使用 Frame，可以减少窗体上控件的数目，进而能改进性能和减小窗体的尺寸。

• 	可以设计得更灵活。如果用一个 Frame 来创建组，所有的按钮都必须在 Frame 内。如果想要多个组，就必须每个组有一个 Frame。但是如果用 GroupName 创建组，该组就可以包含窗体上任何地方的各种选项按钮。如果想要多个组，则应为每个组指定一个唯一的名字上仍然可以在窗体的任何地方放置个别的控件。

• 	可以创建具有透明背景的按钮，用来改善窗体的可视外观 Frame 不是透明控件。

不管采用哪种方法创建按钮组，单击组中一个按钮都将设置同组中其它按钮为 False。同一容器中所有具有相同 GroupName 选项按钮是互斥的。可以在两个容器中使用同一个组名，但是这样做将创建两个组（每容器一个）而不是一个组包含两个容器。

例如，假定一个窗体包含有一些选项按钮和一个也包含有一些选项按钮的 MultiPage。MultiPage 上的选项按钮为一个组，而窗体上的按钮为另一个组。两个组互不影响。改变 MultiPage 上的一个按钮的设置不会影响窗体上的按钮。


Height，Width 属性
Height, Width 属性

对象的高度和宽度的磅。

语法

object.Height [= Single]

object.Width [= Single]

Height 和 Width 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效的对象。
Single	可选的。是指定对象维数的一个数字表达式。
说明

当移动或改变了控件大小时 Height 和 Width 属性要自动更新。如果改变了一个控件的大小，Height 或 Width 属性将保存新的高度或宽度，而 OldHeight 或 OldWidth 属性保存前次的高度和宽度。如果将 Left 或 Top 属性设置为小于 0，这个值将用于计算控件的高度和宽度，但部分控件在窗体上看不见了。

如果把一个控件从窗体的一部分移到其它地方，Height 或 Width 的设置值只随移动时控件大小的改变而改变。控件的 Left 和 Top 属性的设置值将改变，以反映控件相对于窗体边缘的新位置。

为 Height 或 Width 所赋的值必须大于等于 0。对多数系统，推荐值的范围为 0 到 +32,767。更高的值也可能工作，这要依赖于所用系统配置。


HelpContextID 属性

将一个自定义 Microsoft Windows 帮助文件中的带特定主题与一个特定的控件相关联。

语法

object.HelpContextID [= Long]

HelpContextID 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Long	可选的。是一个正整数，它指定与这个对象相关联的帮助文件中主题的上下文ID。0 指示没有帮助主题与这个对象相关联（缺省）。必须是指定的帮助文件中的一个有效的上下文 ID。
说明

当窗体在运行时，由 HelpContextID 属性所标识的主题是有效的。为了显示这个主题，必须选择该控件或者把焦点设置到该控件，然后按 F1 键。

HelpContextID 属性对自定义帮助文件中一个主题进行引用，这个被创建的文件是为了描述该窗体或应用程序的。在 Visual Basic 中，自定义的帮助文件是工程的一个属性。


HideSelection 属性

指定当控件没有焦点时被选择的文本是否保持高亮度。

语法

object.HideSelection [= Boolean]

HideSelection 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Boolean	可选的。指定即使是控件没有焦点时被选择的文本是否保持高亮度。
设置值

对 Boolean 的设置值有：

值	描述
True	被选择的文本不具有高亮度，除非控件有了焦点（缺省）。
False	被选择的文本总是以高亮度出现。
说明

当其它窗体或对话框接收到焦点时，可以用 HideSelection 属性保持高亮度的文本，比如在一个拼写检查过程中那样。


IMEMode 属性

为控件指定输入方法编辑器 (IME) 的缺省的运行时模式。这个属性只用于为远东地区编写的应用程序，在其它应用程序中被忽略。

语法

object.IMEMode [= fmIMEMode]

IMEMode 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
fmIMEMode	可选的。为输入方法编辑器 (IME) 的模式。
设置值

对 fmIMEMode 设置值为：

常数	值	描述
fmIMEModeNoOp	0	不控制 IME （缺省）。
fmIMEModeOn	1	IME 打开。
fmIMEModeOff	2	IME 关闭，英语模式。
fmIMEModeDisable	3	IME 关闭，用户不能通过键盘打开 IME。
fmIMEModeHiragana	4	IME 打开，具有全角平假名模式。
fmIMEModeKatakana	5	IME 打开，具有全角片假名模式。
fmIMEModeKatakanaHalf	6	IME 打开，具有半角片假名模式。
fmIMEModeAlphaFull	7	IME 打开，具有全角字母数字模式。
fmIMEModeAlphaSng	8	IME 打开，具有半角字母数字模式。
fmIMEModeHangulFull	9	IME 打开，具有全角韩语模式。
fmIMEModeHangul	10	IME 打开，具有半角韩语模式。
fmIMEModeNoOp 控件的设置值指示当控件在运行时接收到焦点时 IME 的模式不发生改变。对任何其它值，当控件在运行时接收到焦点时，IME 的方式被设置为由 IMEMode 属性指定的值。

说明

有两种方法设置 IME 的模式。一个是通过 IME 的工具条。另一个是用控件的 IMEMode 属性，它能设置或返回 IME 的当前模式。这个属性允许通过编码对 IME 进行动态控制。

下面的例子说明 IMEMode 如何同 IME 的工具条进行交互。假定已经设计了一个带有 TextBox1 和 CheckBox1 的窗体。TextBox1.IMEMode 已经设置为 0，CheckBox1.IMEMode 已经设置为 1。在设计模式期间已使用 IME 工具条把 IME 设置为模式 2。

当要运行该窗体时，IME 开始是在模式 2。如果单击 TextBox1，IME 模式不变，因为该控件的 IMEMode 为 0。如果单击 CheckBox1，IME 变为模式 1，这是因为该控件的 IMEMode 为 1。如果再次单击 TextBox1，则 IME 保持在模式 1（IMEMode 为 0，因此 IME 保留其最后的设置）。

然而，可以替代 IMEMode。例如，假定单点击 CheckBox1 而且 IME 进入模式 1，这是根据 CheckBox 的 IMEMode 对的定义。如果接着又用 IME 工具条按模式 3 设置 IME，那么任何时候单击该控件时，IME 都将设置为模式 3。这样做不会改变该属性的值，它替代该属性直至下次运行该窗体时。


Index 属性

在 Tabs 集合中是 Tab 对象的位置，或者在 Pages 集合中 Page 对象的位置。

语法

object.Index [= Integer]

Index 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Integer	可选的。当前选定的 Tab 对象的索引。
说明

此 Index 属性指定了 tabs 出现的顺序。改变 Index 的值将从视觉上改变 MultiPage 中 Pages 的顺序或改变 TabStrip 中 Tabs 的顺序。第一页或第一个 tab 的索引值是 0，第二页或第二个 tab 的索引值是 1，依此类推。

在 MultiPage 中，Index 既引用 Page 也引用该页的 Tab。在 TabStrip 中，Index 只引用 tab。


InsideHeight, InsideWidth 属性

InsideHeight 返回窗体中的客户区高度的磅数。InsideWidth 返回窗体中的客户区宽度的点数。

语法

object.InsideHeight

object.InsideWidth

InsideHeight 和 InsideWidth 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
说明

InsideHeight 和 InsideWidth属性是只读的。如果该区含有滚动条，返回的值不包括滚动条的高度和宽度。


IntegralHeight 属性

指示 ListBox 或 TextBox 是显示列表中全部文本行还是显示部分行。

语法

object.IntegralHeight [= Boolean]

IntegralHeight 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Boolean	可选的。列表是否是显示部分文本行。
设置值

Boolean 的设置值有：

值	描述
True	列表本身调整大小以便显示完整的项目（缺省值）。
False	列表本身不调整大小，即使该项目对完整显示太高。
说明

IntegralHeight 属性与列表的高度有关，就象 AutoSize 属性与列表的宽度有关一样。

如果 IntegralHeight 为 True，则该列表框在需要显示所有行时要自动调整大小。如果为 False，则列表保持固定的大小，如果项目比列表中的可用空间更高，则整个项目不能显示。


TakeFocusOnClick 属性

指定被单击时控件是否要取得焦点。

语法

object.TakeFocusOnClick [= Boolean]

TakeFocusOnClick 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Boolean	可选的。指定被单击时控件是否要取得焦点。
设置值

对 Boolean 的设置值有：

值	描述
True	被单击时按钮要取得焦点（缺省）。
False	被单击时按钮不取得焦点。
说明

TakeFocusOnClick 属性仅定义单击一个控件时发生什么。如果用 tabs 键选择这个控件，不管 TakeFocusOnClick 的值是什么，则该控件都要取得焦点。

为了完成影响一个控件的动作而又不要求控件放弃焦点时应使用这个属性。例如，假定一个窗体包含一个 TextBox 和一个检查文本正确拼写的 CommandButton。所希望的可能是选择 TextBox 中的文本，然后点击 CommandButton 并运行拼写检查程序而又不用把焦点从 TextBox 中取走。通过设置 CommandButton 的 TakeFocusOnClick 属性为 False 就可以做到这样。


KeepScrollBarsVisible 属性

指定当不需要时是否还要保持滚动条可见。

语法

object.KeepScrollBarsVisible [= fmScrollBars]

KeepScrollBarsVisible 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
fmScrollBars	可选的。是滚动条显示的地方。
设置值

对 fmScrollBars 的设置值有：

常数	值	描述
fmScrollBarsNone	0	不显示滚动条。
fmScrollBarsHorizontal	1	显示一个水平滚动条。
fmScrollBarsVertical	2	显示一个垂直滚动条。
fmScrollBarsBoth	3	水平和垂直滚动条都显示（缺省）。
说明

如果可视的区域大到足够显示一个对象上的所有控件，比如一个 Page 对象或一个窗体时，就不需要滚动条。KeepScrollBarsVisible 属性确定当不需要时，是否要保持滚动条可见。

如果不需要时仍要滚动条可见，它们按正常尺寸出现，而且滚动框要充满滚动条的整个宽度和高度。


LargeChange 属性

指定当在滚动框和滚动箭头之间单击时引起的移动量。

语法

object.LargeChange [= Long]

LargeChange 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Long	可选的。为一个整数，它指定对 Value 属性的改变量。
说明

LargeChange 属性只适用于 ScrollBar。它不适用于如 TextBox 或下拉式 ComboBox 之类的其它控件中的滚动条。

LargeChange 的值是当单击滚动框和滚动箭头之间的区域时 ScrollBar的 Value 属性的改变量。移动的方向总是向着单击的地方。例如，在一个水平 ScrollBar 中，单击滚动框的左面就使滚动框向左移动。在一个垂直 ScrollBar 中，单击滚动框的上部就使滚动框向上移动。

LargeChange 没有单位。任何整数都是它的有效设置。推荐值的范围是 -32,767 到 +32,767，并且该值必须在 ScrollBar 的 Max 和 Min 属性值之间。


LayoutEffect 属性

指定在一个布局改变期间控件是否移动。

语法

object.LayoutEffect

LayoutEffect 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
返回值

LayoutEffect属性返回值是：

常数	值	描述
fmLayoutEffectNone	0	控件不移动。
fmLayoutEffectInitiate	1	控件移动。
说明

LayoutEffect 属性是只读的并且仅在 Layout 事件中可用。如果 Layout 参数为 True，则 Layout 事件用 Move 方法启动。

当改变一个控件的 Left , Top , Height 或 Width 属性的设置值时，则不启动 Layout 事件。

Layout 事件对涉及移动操作的任何控件都要设置 LayoutEffect。例如，如果移动一个控件组，则每个控件的 LayoutEffect 都被设置。


Left, Top 属性

一个控件与它所在的窗体的左或顶边之间的距离。

语法

object.Left [= Single]

object.Top [= Single]

Left 和 Top 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Single	可选的。指定对象坐标的一个数字表达式。
设置值

Left 或 Top 属性的设置为 0 将把控件的边放在其容器的左或顶边缘处。

说明

对多数系统，Left 和 Top 的推荐值范围为 -32,767 到 +32,767。其它值也可以工作但依赖于所用系统的配置。对一个 ComboBox来说，Left 和 Top 的值适用于控件的文本部分而不是列表部分。当移动或改变一个控件的大小时，其新的 Left 设置将自动输入该属性的工作表中。当打印一个窗体时，该控件的水平或垂直位置由其 Left 或 Top 的设置值所确定。


LineCount 属性

返回在 TextBox 或 ComboBox 中的文本行的行数。

语法

object.LineCount

LineCount 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
说明

LineCount 属性是只读的。

注意  ComboBox 只有一行。


List 属性

返回或设置 ListBox 或 ComboBox 的列表的条目数。

语法

object.List( row, column ) [= Variant]

List 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
row	必需的。为一个整数，其范围为 0 到列表条目数减 1。
column	必需的。为一个整数，其范围为 0 到列数减 1。
Variant	可选的。是 ListBox 或 ComboBox 中指定条目的内容。
设置值

行和列的编号从 0 开始。即列表中第一行的行号为 0，第一列的列号为 0。第二行或列的编号为 1，如此类推。

说明

List 属性与 ListCount 和 ListIndex 属性一起使用。用 List 访问列表的条目。一个列表就是一个变体；列表中每一项都有一个行号和一个列号。

初始时，ComboBox 和 ListBox 包含一个空的列表。

注意  要指定希望在一个 ComboBox 或 ListBox 中显示的条目时，可使用 AddItem 方法。要移走条目，应使用 RemoveItem 方法。

为了把值的一个完整的二维数组复制到一个控件上应使用 List。为了加载一个一维数组或加载单个元素应使用 AddItem。


ListCount 属性

返回一个控件中的列表的条目数。

语法

object.ListCount

ListCount 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
说明

ListCount 属性是只读的。ListCount 为可以在其上进行滚的行数。ListRows 是一次可显示的最大值。ListCount 总是比 ListIndex 属性的最大值大 1，因为索引的数值是从 0 开始而条目的计数是从 1 开始。如果没有项被选择，则 ListCount 为 0，而 ListIndex 为 -1。


ListIndex 属性

指定当前在 ListBox 或 ComboBox 中被选的条目。

语法

object.ListIndex [= Variant]

ListIndex 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Variant	可选的。控件中当前被选的条目。
说明

ListIndex 属性含有一个列表中的被选行的索引。ListIndex 的取值范围为－1 到列表总行数减 1（即，ListCount - 1）。当没有行被选时，ListIndex 返回 -1。当在 ListBox 或 ComboBox 中选择一行时，系统将设置 ListIndex 值。列表中第一行的 ListIndex 值是 0，第二行的 ListIndex 值是 1，依此类推。

注意  如果用 MultiSelect 属性创建一个允许多重选择的 ListBox 时，那么 ListBox 的 Selected 属性（而不是 ListIndex 属性）将指示被选择的行。Selected 属性是一个数组，其中值的个数与 ListBox 中的行数相同。对列表框中的每一行，若该行被选择，则 Selected 为 True，否则为 False。在一个允许多重选择的 ListBox 中，ListIndex 返回具有焦点行的索引，而不管该行当前是否被选择。

对于一个组合框或列表框，通过设置 BoundColumn 属性的值为 0，可使 ListIndex 值也能使用。如果 BoundColumn 为 0，被连接的组合框或列表框的支撑的数据源包含有与 ListIndex 相同的列表索引值。


ListRows 属性

指定在列表中显示的最大行数。

语法

object.ListRows [= Long]

ListRows 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Long	可选的。是指示最大行数的一个整数。缺省值为 8。
说明

如果列表中的条目数超出 ListRows 属性的值，则在组合框的列表框部分的右边将出现一个滚动条。


ListStyle 属性

指定在 ListBox 或 ComboBox 中列表的可视外观。

语法

object.ListStyle [= fmListStyle]

ListStyle 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
fmListStyle	可选的。为列表的可视风格。
设置值

对 fmListStyle 的设置值有：

常数	值	描述
fmListStylePlain	0	看上去象一个常规的列表框，条目的背景为高亮。
fmListStyleOption	1	示出选项按钮，或者示出用于多重选择列表的复选框（缺省）。当从组中选择一个项时，与该项相关的选项按钮既被选择，而该组其它项的选相按钮则被取消选择。
说明

ListStyle 属性可用以改变一个 ListBox 或 ComboBox 的视觉表现。通过一种不同于 fmListStylePlain 的设置，可以提出任一控件的目录作为一组单独项目，每个项目都包含一个直观的记号用以指示它是否被选择。

如果控件支持单一选择（MultiSelect 属性被设置为 mMultiSelectSingle），则可以按下组中的一个按钮。如果控件支持多重选择，则可以按下组中两个或更多的按钮。


ListWidth 属性

指定在 ComboBox 中列表的宽度。

语法

object.ListWidth [= Variant]

ListWidth 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Variant	可选的。是列表的宽度。为 0 时使该列表与 ComboBox 同样宽，缺省值是使该列表与控件的文本部分的宽度相同。
说明

如果想要显示一个多列的列表，应输入一个值它将使列表框的宽度足够装下所有的列。

提示  当设计组合框时，要确保留出足够的地方以显示数据以及供一个垂直滚动条使用。


Locked 属性

指定一个控件是否能被编辑。

语法

object.Locked [= Boolean]

Locked 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
Boolean	可选的。控件是否能被编辑。
设置值

对 Boolean 的设置值有：

值	描述
True	不能编辑该值。
False	可以编辑该值（缺省）。
说明

当一个控件被锁定和有效时，它仍然可以启动事件而且仍然能接收焦点。


MatchEntry 属性

返回或设置一个值，用来指示 ListBox 或 ComboBox 如何按打入的要求搜索它的列表。

语法

object.MatchEntry [= fmMatchEntry]

MatchEntry 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
fmMatchEntry	可选的。是用来匹配列表中条目的一个规则。
设置值

对 fmMatchEntry 的设置值有：

常数	值	描述
fmMatchEntryFirstLetter	0	基本的匹配。控件搜索下条条目该条目是用输入的字符开始的。反复输入相同的字母将循环通过以该字母打头的所有条目。
fmMatchEntryComplete	1	扩充的匹配。每输入一个字符时，控件就进行搜索能与全部已输入字符匹配的一条条目（缺省）。
fmMatchEntryNone	2	不进行匹配。
说明

MatchEntry 属性从 ListBox 或 ComboBox 的 TextColumn 属性开始进行搜索条目。

为找到匹配输入项的一条条目，控件搜索由 TextColumn 所标识的列。找到一个匹配时，就选择包含该匹配的行，显示该列的内容，并且它的 BoundColumn 属性的内容变成为该控件的值。如果匹配是单值性的，则匹配的找出就启动该 Click 事件。

一旦输入的一个字符序列精确地匹配列表中的一条记录时，控件就启动该 Click 事件。当进行输入时，输入项将容与该列表的当前行和下一行比较，当输入项只匹配到当前行时，则匹配是单值性的。

在 Microsoft 窗体中，没有考虑列表是否排序。这意味着控件找到的与输入项匹配的第一个出现，是基于列表中项目的顺序的。例如，对于下列列表，输入 "abc" 或 "bc" 都将启动 Click 事件：

abcde

bcdef

abcxyz

bchij

注意在两种情况下，匹配项都是不唯一的，不过，在控件解释匹配的无二义性和启动 Click 事件上，上面例子的相邻记录之间是完全不同的。


MatchFound 属性

指示输入到一个组合框的文本与列表中的某个条目是否匹配。

语法

object.MatchFound

MatchFound 属性的语法包含以下部分：

部分	描述
object	必需的。是一个有效对象。
返回值

MatchFound 属性的返回值为：

值	描述
True	Value 属性的内容与该列表中的记录之一匹配。
False	Value 的内容不与该列表中的任何记录匹配（缺省）。
说明

MatchFound 属性是只读的。当 MatchEntry 属性设置为 fmMatchEntryNone 的时候不能使用此属性。


MatchRequired 属性

说明进入 ComboBox 文本部分的值是否必须与该控件现有列表中的选项相匹配。用户可键入不匹配的值，但直到键入一个匹配的值才有可能退出该控件。

语法

object.MatchRequired [= Boolean]

MatchRequired 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
Boolean	可选的。输入的文本是否必须与列表中现有的登录项匹配。
设置值

Boolean的设置值为：

值	说明
True	输入的文本必须与列表中现有的登录项匹配。
False	输入的文本可以与现有列表中的所有登录项都不同（缺省）。
说明

如果 MatchRequired 属性为 True，在输入的文本与现有列表中的登录项相匹配之前，用户不能退出 ComboBox。MatchRequired 通过要求用户选择一个现有的登录项来保持列表的完整性。

注意  不是所有容器强制该属性。


Max, Min 属性

说明 ScrollBar 或 SpinButton 的 Value 属性可接收的最大值和最小值。

语法

object.Max [= Long]

object.Min [= Long]

Max 和 Min 属性的句法包括下列部分：

部分	说明
object	需要的一个合法的对象。
Long	可选的。数值表达式，说明 Value 属性设置的最大值或最小值。
说明

敲击 SpinButton 或移动 ScrollBar 中的滚动框改变控件的 Value 属性。

Max 属性的值与垂直 ScrollBar 的最低位置或水平 ScrollBar 的最右位置相对应。Min 属性的值与垂直 ScrollBar 的最高位置或水平 ScrollBar 的最左位置相对应。

该属性的设置可以是任意整型。建议取值范围为 -32,767 到 +32,767。缺省值为 1。

注意  Min 和 Max 是指位置，而不是 ScrollBar 上的相对值。也就是说，Max 的值有可能小于 Min 的值。此时，向 Max（底）位置移动表示减少 Value，向 Min（顶）位置移动表示增加 Value。


MaxLength 属性

说明用户可以输入到 TextBox 或 ComboBox 的最多字符数。

语法

object.MaxLength [= Long]

MaxLength 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
Long	可选的。整数，说明可允许的字符数。
说明

设置 MaxLength 属性为 0 说明只要内存允许则没有限制。


MouseIcon属性

赋给对象一个自定义的图标。

语法

object.MouseIcon = LoadPicture( pathname )

MouseIcon 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
pathname	需要的。字符串表达式，说明包含自定义图标的文件的路径和文件名。
说明

当 MousePointer 属性设置为 99 时，MouseIcon 属性有效。对象的鼠标图标是当用户移动鼠标穿过该对象时出现的图形。

可采用赋给 MouseIcon 属性一个图形或用 LoadPicture函数从文件中加载图形的方法为鼠标指针赋一图形。


MousePointer 属性

说明当用户把鼠标放到特定对象上时显示指针的类型。

语法

object.MousePointer [= fmMousePointer]

MousePointer 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
fmMousePointer	可选的。所要鼠标指针的形状。
设置值

fmMousePointer 的设置值为：

常数	值	说明
fmMousePointerDefault	0	标准指针。图形由对象确定（缺省）。
fmMousePointerArrow	1	箭头。
fmMousePointerCross	2	十字线指针。
fmMousePointerIBeam	3	I-beam。
fmMousePointerSizeNESW	6	双箭头指向东北和西南。
fmMousePointerSizeNS	7	双箭头指向北和南。
fmMousePointerSizeNWSE	8	双箭头指向西北和东南。
fmMousePointerSizeWE	9	双箭头指向西和东。
fmMousePointerUpArrow	10	上箭头。
fmMousePointerHourglass	11	沙漏。
fmMousePointerNoDrop	12	在被拖动的对象上有 "Not" 符号（有一条斜线的圆）。说明放目标无效。
fmMousePointerAppStarting	13	有沙漏的箭头。
fmMousePointerHelp	14	有问号的箭头。
fmMousePointerSizeAll	15	调整所有光标的大小（箭头指向北、南、东和西）。
fmMousePointerCustom	99	使用 MouseIcon 属性说明的图标。
说明

若要显示当鼠标在窗体控件上移过时函数的变化，则要使用 MousePointer 属性。例如，设置沙漏 (11) 说明用户必须等待一个过程或操作完成。

有些图标与系统的设置有关，例如与桌面题目相关的图标。


MultiLine 属性

说明一个控件能否接收和显示多行文本。

语法

object.MultiLine [= Boolean]

MultiLine 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
Boolean	可选的。控件是否支持多行文本。
设置值

Boolean 的设置值为：

值	说明
True	多行显示文本（缺省）。
False	不多行显示文本。
说明

多行 TextBox 允许绝对行中断并调整行的数量以适应文本的数量。如果需要，一个多行控件可以有垂直滚动条。

单行 TextBox 不允许绝对行中断并且没有垂直滚动条。

单行控件忽略 WordWrap 属性的值。

注意   如果在多行 TextBox 中改变 MultiLine 为 False，在 TextBox 中的所有字符都将合为一行，包括非打印字符（如，回车和换行）。


MultiRow 属性

说明控件是否有多行 tab。

语法

object.MultiRow [= Boolean]

MultiRow 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
Boolean	可选的。控件是否有多行 tabs。
设置值

Boolean 的设置值为：

值	说明
True	允许多行 tabs。
False	限制 tabs 为单行（缺省）。
说明

tabs 的宽度和数量确定行数。改变控件的大小也改变行数。这就允许开发者重新设置控件的大小确保 tabs 环绕以适合该控件。如果 MultiRow 属性为 False，当 tabs 宽度超出控件的宽度时就进行截断。

如果 MultiRow 为 False 并且 tabs 被截断，在 TabStrip 中会有一个小的滚动条允许滚动到其它 tabs 或其它页。


MultiSelect 属性

说明对象是否允许多项选择。

语法

object.MultiSelect [= fmMultiSelect]

MultiSelect 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
fmMultiSelect	可选的。控件使用的选择方式。
设置值

fmMultiSelect 的设置值为：

常数	值	说明
fmMultiSelectSingle	0	只能选择一项（缺省）。
fmMultiSelectMulti	1	按 SPACEBAR 键或单击鼠标以选定列表中一项或撤消选定。
fmMultiSelectExtended	2	按 SHIFT 键并单击鼠标，或按 SHIFT 键和一箭头键，扩展以前的项到当前项。按 CTRL 键并单击鼠标选定或撤消选定。
说明

当 MultiSelect 属性设置为 Extended 或 Simple，必须使用列表框的 Selected 属性确定选择的项目。而且，控件的 Value 属性总是 Null。

ListIndex 属性用键盘焦点返回行的索引。


Name 属性

说明一个控件或对象的名字，或与 Font 对象相关的字体的名字。

语法

对字体
Font.Name [= String]

对所有的控件和对象

object.Name [= String]

Name 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
String	可选的。要赋予字体或控件的名字。
设置值

将字符串赋给 Name 的准则对不同的应用程序是不同的，例如名字的最大长度。

说明

对于对象，Name 的缺省值由对象的类名后跟一个整型数组成。例如，放置在一窗体上的第一个 TextBox 的缺省名是 TextBox1。第二个 TextBox 的缺省名是 TextBox2。

可以从控件属性页中为控件设置 Name 属性，或用程序语句为在运行时加入的控件设置 Name 属性。对在设计时加入的控件，不能在运行时修改其 Name 属性。

设计时加到窗体中的每个控件都必须有唯一的名字。

对于 Font 对象，Name 标识用在控件、对象或窗体的文本部分的一种特殊的字体。该字体在显示器上显示的与打印出来的可能不同，这依赖于计算机和打印机。如果选择了一种系统不能显示或没有安装的字体，Windows 用一种相似的字体代替。


Object 属性

若一新的控件具有相同名字的属性或方法，则覆盖相应的标准属性或方法。

语法

object.Object[.property |.method]

Object 属性的句法包括下列部分：

部分	说明
object	需要的。加入到 Microsoft 窗体工具箱中对象的名字。
property	可选的。与标准 Microsoft 窗体属性有相同名字的属性。
method	可选的。与标准 Microsoft 窗体方法有相同名字的方法。
说明

Object是只读的。

如果在 Microsoft 窗体工具箱中加入一个新控件，加入的控件的属性或方法有可能与标准 Microsoft 窗体的属性或方法同名。Object 属性保证使用加入的控件的属性或方法，而不是标准的属性或方法。


OldHeight, OldWidth 属性

以磅返回控件先前的高度或宽度。

语法

object.OldHeight

object.OldWidth

OldHeight 和 OldWidth 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
说明

OldHeight 和 OldWidth 是只读的。

当移动或改变控件的大小时，OldHeight 和 OldWidth 属性自动更新。如果改变控件的大小，Height 和 Width 属性保存新的高度，OldHeight 和 OldWidth 保存先前的高度。

该属性只在 Layout 事件有效。


OldLeft, OldTop 属性

返回控件先前的位置与包含该控件的窗体的左边或顶边之间磅距。

语法

object.OldLeft

object.OldTop

OldLeft 和 OldTop 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
说明

OldLeft 和 OldTop 是只读的。

当移动或改变控件大小时，OldLeft 和 OldTop 属性自动更新。如果移动一个控件，Left 和 Top 属性保存从控件到其容器左边的新的距离，OldLeft 和 OldTop 保存先前 Left 的值。

OldLeft 和 OldTop 只在 Layout 事件有效。


Orientation 属性

说明 SpinButton 或 ScrollBar 是否定向为垂直或水平。

语法

object.Orientation [= fmOrientation]

Orientation 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
fmOrientation	可选的。控件定向。
设置值

fmOrientation 的设置值为：

常数	值	说明
fmOrientationAuto	-1	按照控件的维数自动确定方向（缺省）。
fmOrientationVertical	0	控件为垂直方向。
fmOrientationHorizontal	1	控件为水平方向。
说明

如果指定为自动定向，控件的高或宽确定是否水平或垂直显示。例如，如果控件的宽大于高，控件水平显示，如果高大于宽则垂直显示。


Parent 属性

返回包含特定的控体、对象或集合的窗体、对象或集合的名字。

语法

object.Parent

Parent 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
说明

Parent 是只读的。

用 Parent 属性访问一个对象父体的属性、方法或控件。

在以参数方式传递对象的应用程序中该属性是很有用的。例如，可以给模块的通用过程传递一控件变量，使用 Parent 访问其父窗体。


PasswordChar 属性

说明是显示位置保留区字符还是显示实际输入给 TextBox 的字符。

语法

object.PasswordChar [= String]

PasswordChar 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
String	可选的。 字符串表达式，说明位置保存区字符。
说明

使用 PasswordChar 属性保护敏感信息，例如口令或密码。PasswordChar 的值是显示在控件上的字符，而不是用户实际键入的字符。如果没有指明字符，控件显示用户键入的字符。


Picture 属性

说明显示在一对象上的位图。

语法

object.Picture = LoadPicture( pathname )

Picture 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
pathname	需要的。一个图形文件的全路径。
说明

设计一窗体时，可以使用控件的属性页把一个位图赋给 Picture 属性。当运行一窗体时，必须使用 LoadPicture 函数把一个位图赋给 Picture。

要删除赋给控件的图形，在属性页中选中 Picture 属性的值，然后按下 DELETE 键。按 BACKSPACE 键不能删除图形。

注意   对有标题的控件，用 PicturePosition 属性说明在对象上显示图形的位置。使用 PictureSizeMode 属性确定图形如何填充对象。

透明的图形有时会显得模糊。如果您不喜欢，可在支持不透明图象的控件中显示图形。Image 和 MultiPage 支持不透明图象。


PictureAlignment 属性

说明一个背景图形的位置。

语法

object.PictureAlignment [= fmPictureAlignment]

PictureAlignment 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
fmPictureAlignment	可选的。图形与控件对齐的位置。
设置值

fmPictureAlignment 的设置值为：

常数	值	说明
fmPictureAlignmentTopLeft	0	左上角。
fmPictureAlignmentTopRight	1	右上角。
fmPictureAlignmentCenter	2	中心。
fmPictureAlignmentBottomLeft	3	左下角。
fmPictureAlignmentBottomRight	4	右下角。
说明

PictureAlignment 属性说明图形的哪一个角与使用该图形的控件或容器相应的角一样。

例如，设置 PictureAlignment 为 fmPictureAlignmentTopLeft 表示图形的左上角与控件或容器的左上角一致。设置 PictureAlignment 为 fmPictureAlignmentCenter 把图形放在相对于控件或容器的高和宽的中间。

如果在控件或容器中平铺图形，PIctureAlignment 的设置值影响平铺模式。例如，如果 PictureAlignment 设置为 fmPictureAlignmentUpperLeft，第一个拷贝存放在控件或容器的左上角，额外的拷贝从左到右逐行平铺。如果 PictureAlignment 设置为 fmPictureAlignmentCenter，第一个拷贝存放在控件或容器的中心，额外的拷贝存放在该行的左边和右边填满该行，其余行填充控件或容器。

注意  设置 PictureSizeMode 属性为 fmSizeModeStretch 覆盖 PictureAlignment。当 PictureSizeMode 设置为 fmSizeModeStretch，图形填充整个控件或容器。


PicturePosition 属性

说明图形相对于其标题的位置。

语法

object.PicturePosition [= fmPicturePosition]

PicturePosition 属性的句法包括下列部分：

部分	说明
object	需要的。一个合法的对象。
fmPicturePosition	可选的。图形如何与其容器对齐。
设置值

fmPicturePosition 的设置值为：

常数	值	说明
fmPicturePositionLeftTop	0	图形在标题的左边显示。标题与图形顶端对齐。
fmPicturePositionLeftCenter	1	图形在标题的左边显示。标题位于图形的中间。
fmPicturePositionLeftBottom	2	图形在标题的左边显示。标题与图形的底边对齐。
fmPicturePositionRightTop	3	图形在标题的右边显示。标题与图形顶端对齐。
fmPicturePositionRightCenter	4	图形在标题的右边显示。标题位于图形的中间。
fmPicturePositionRightBottom	5	图形在标题的右边显示。标题与图形的底边对齐。
fmPicturePositionAboveLeft	6	图形在标题的上边显示。标题与图形左边对齐。
fmPicturePositionAboveCenter	7	图形在标题的上边显示。标题在图形下面中间位置（缺省）。
fmPicturePositionAboveRight	8	图形在标题的上边显示。标题与图形右边对齐。
fmPicturePositionBelowLeft	9	图形在标题的下边显示。标题与图形左边对齐。
fmPicturePositionBelowCenter	10	图形在标题的下边显示。标题在图形上面中间位置。
fmPicturePositionBelowRight	11	图形在标题的左边显示。标题与图形右边对齐。
fmPicturePositionCenter	12	图形在控件的中间显示。标题在图形上的水平和垂直方向的中心。
说明

图形和标题，作为一个单元，位于控件的中心。如果没有标题，图形相对于控件的中心定位。

如果 Picture 属性没有说明图形，该属性被忽略。


PictureSizeMode 属性

说明如何在控件、窗体或页面上显示背景图形。

语法

object.PictureSizeMode [= fmPictureSizeMode]

PictureSizeMode 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
fmPictureSizeMode	可选的。如果图形与包含它的窗体或页面大小不等应进行的操作。
设置值

fmPictureSizeMode 的设置值为：

常数	值	说明
fmPictureSizeModeClip	0	裁掉图形中比窗体或页大的那部分（缺省）。
fmPictureSizeModeStretch	1	伸展图形使其填满窗体或页面。该设置值使图形在垂直和水平方向都产生变形。
fmPictureSizeModeZoom	3	放大图形，但图形在水平和垂直方向上都不变形。
说明

fmPictureSizeModeClip 设置说明您希望图形以其原始的大小和比例显示。如果窗体或页面比图形小，该设置值只显示在窗体或页面中的部分图形。

fmPictureSizeModeStretch 和 fmPictureSizeModeZoom 设置值都放大图象，但 fmPictureSizeModeStretch 引起变形。fmPictureSizeModeStretch 设置值在水平和垂直方向放大图形，直至图形到达容器或控件的相应的边界为止。fmPictureSizeModeZoom 设置值放大图形，直至图形到达容器或控件垂直或水平边界为止。如果图形先到达水平边界，到垂直边界的其余部分保持空白。如果图形先到达垂直边界，到水平边界的其余部分保持空白。


PictureTiling 属性

允许在窗体或页面中平铺图形。

语法

object.PictureTiling [= Boolean]

PictureTiling 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
Boolean	可选的。图形与背景重叠时是否重复显示。
设置值

Boolean 的设置值为：

值	说明
True	图形与背景上平铺。
False	图形不在背景上平铺（缺省）。
说明

如果图形小于包含它的窗体或页面，可以在窗体或页面中平铺图形。

平铺的模式依赖于当前 PictureAlignment 和 PictureSizeMode 属性的设置。例如，如果 PictureAlignment 设置为 fmPictureAlignmentTopLeft，平铺模式从左上方开始横跨窗体或页面，并沿窗体或页高而下。如果 PictureSizeMode 设置为 fmPictureSizeModeClip，且上一次平铺没有全部安装到窗体或页面，平铺模式将对上一次平铺进行剪裁。


ProportionalThumb 属性

说明滚动框的大小是与滚动区成比例还是固定。

语法

object.ProportionalThumb [= Boolean]

ProportionalThumb 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
Boolean	可选的。滚动框是成比例还是固定。
设置值

Boolean 的设置值为：

值	说明
True	滚动框与滚动区的大小成比例（缺省）。
False	滚动框大小固定。
说明

一个成比例的滚动框用图形表示在窗口可见的对象的百分比。例如，如果对象的 75% 可见，在滚动条中滚动框覆盖 3/4 滚动区。

如果滚动框大小固定，系统根据滚动条的高度和宽度确定其大小。


RowSource 属性

说明为 ComboBox 或 ListBox 提供列表的源。

语法

object.RowSource [= String]

RowSource 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
String	可选的。ComboBox 或 ListBox 列表的源。
说明

RowSource 属性可以接受 Microsoft Excel 的工作单范围。


ScrollBars 属性

说明一个控件、窗体或页面是否有垂直、水平滚动条，或两者都有。

语法

object.ScrollBars [= fmScrollBars]

ScrollBars 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
fmScrollBars	可选的。应显示滚动条的位置。
设置值

fmScrollBars 的设置值为：

常数	值	说明
fmScrollBarsNone	0	不显示滚动条（缺省）。
fmScrollBarsHorizontal	1	显示水平滚动条。
fmScrollBarsVertical	2	显示垂直滚动条。
fmScrollBarsBoth	3	垂直和水平滚动条都显示。
说明

如果 KeepScrollBarsVisible 属性为 True，不管对象内容是否安装在对象边框内，窗体或页面中的任何滚动条总是可见的。

如果滚动条可见，滚动条约束滚动框在其可见区。还可以根据保持整个滚动条可见的需要改变滚动位置。当 ScrollBars 属性值、滚动范围或可见范围发生变化时，滚动条的范围发生变化。

如果滚动条不可见，可以设置其滚动位置为任何值。负值和大于滚动范围的值都是合法的。

对于一个单行控件，使用 ScrollBars 和 AutoSize 属性可以显示水平滚动条。滚动条的隐藏或显示遵循下列规则：

1.	当 ScrollBars 设置为 fmScrollBarsNone，不显示滚动条。

2.	当 ScrollBars 设置为 fmScrollBarsHorizontal 或 fmScrollBarsBoth，如果文本长度大于编辑区，并且控件有足够的空间在其编辑区下边包含滚动条，则控件显示一个水平滚动条。

3.	当 AutoSize 是 True，除非控件已在或接近其最大尺寸，为了适应增加的滚动条，控件将放大自己。

对于一个多行 TextBox，可以使用 ScrollBars、 WordWrap 和 AutoSize 属性显示滚动条。滚动条的隐藏或显示遵循下列规则：

1.	当 ScrollBars 设置为 fmScrollBarsNone，不显示滚动条。

2.	当 ScrollBars 设置为 fmScrollBarsVertical 或 fmScrollBarsBoth，如果文本长度大于编辑区，并且控件有足够的空间在其编辑区右边包含滚动条，则控件显示一个垂直滚动条。

3.	当 WordWrap 为 True，多行控件不显示水平滚动条。多数多行控件不使用水平滚动条。

4.	如果下列条件同时发生，多行控件可以显示水平滚动条：

• 	编辑区有一个比编辑区宽度长的单词。

• 	控件使水平滚动条有效。

• 	控件有足够的空间在其编辑区包含滚动条。

• WordWrap 属性设置为 False。


ScrollHeight, ScrollWidth 属性

说明在控件、窗体或页面中，通过移动滚动条可以看见的全部区域的磅高度。

语法

object.ScrollHeight [= Single]

object.ScrollWidth [= Single]

ScrollHeight 和 ScrollWidth 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
Single	可选的。可滚动区域的高度或宽度。


ScrollLeft, ScrollTop 属性

说明从逻辑窗体、页面或控件的左边或顶边到可见窗体的左边或顶边的磅距离。

语法

object.ScrollLeft [= Single]

object.ScrollTop [= Single]

ScrollLeft 和 ScrollTop 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
Single	可选的。从窗体边的距离。
说明

最小值是 0，最大值是窗体或页面的 ScrollWidth 和 Width 属性值之差。


Selected 属性

返回或设置在 ListBox 中的项目选择状态。

语法

object.Selected( index ) [= Boolean]

Selected 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
index	需要的。整数，范围从 0 到比列表中的项目数小于 1。
Boolean	可选的。一个项目是否被选中。
设置值

Boolean 的设置值为：

值	说明
True	项目被选中。
False	项目未被选中。
说明

当用户可以构造多项选择时，Selected 属性是很有用的。可以用该属性确定在多项选择列表框中选中的行。还可以用该属性在代码列表中选中行或撤消选定。

该属性的缺省值基于当前 ListBox 的选择状态。

对于单选列表框，建议用 Value 或 ListIndex 属性获取和设置选项。在这种情况下，ListIndex 返回被选定项的索引。然而，对复选情况，ListIndex 返回包含在矩形焦点中的行的索引，而不管该行是否实际被选中。

当一个列表框控件的 MultiSelect 属性设置为 None，只有一行可以设置其 Selected 属性为 True。

输入一个超出索引范围的值，不会产生错误消息，但也不会对列表中任何项设置属性。


SelectedItem 属性

返回当前选中的 Tab 或 Page 对象。

语法

object.SelectedItem

SelectedItem 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的 TabStrip 或 MultiPage。
说明

SelectedItem 属性是只读的。用 SelectedItem 对当前选中的 Tab 或 Page 对象进行可编程控制。例如，可以用 SelectedItem 给 Tab 或 Page 对象的属性赋值。


SelectionMargin 属性

说明用户是否可以通过单击文本左边区域选中一行。

语法

object.SelectionMargin [= Boolean]

SelectionMargin 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
Boolean	可选的。是否可以通过单击页边距选中一行文本。
设置值

Boolean 的设置值为：

值	说明
True	单击页边距选中文本（缺省）。
False	单击页边距不能选中文本。
说明

当 SelectionMargin 属性为 True，选择边距占据控件编辑区左边一窄条区域。如果 SelectionMargin 属性设置为 False，整个编辑区都可以保存文本。

在打印一个控件时，如果 SelectionMargin 属性设置为 True，也将打印选择边距。


SelLength 属性

在一个文本框或一个组合框的文本部分中选中的字符数。

语法

object.SelLength [= Long]

SelLength 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
Long	可选的。数字表达式，说明选中的字符数。对于 SelLength 和 SelStart，设置值的有效范围是从 0 到 ComboBox 或 TextBox 编辑区中的全部字符数。
说明

即使控件没有焦点，SelLength 属性也总是有效。设置 SelLength 的值小于 0 会产生一个错误。要设置 SelLength 的值为大于控件中的有效字符数导致其等于控件中字符数的值。

注意  改变 SelStart 属性的值会删除控件中存在的任何选项，在文本中设置插入点，并设置 SelLength 为 0。

缺省值 0 表示当前没有文本被选中。


SelStart 属性

说明选中文本的开始点，如果没有文本选中，说明插入点。

语法

object.SelStart [= Long]

SelStart 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
Long	可选的。数字表达式，说明选中文本的开始点。对于 SelLength 和 SelStart，设置值的有效范围是从 0 到 ComboBox 或 TextBox 编辑区中的全部字符数。缺省值是 0。
说明

即使控件没有焦点，SelStart 属性也总是有效。设置 SelStart 为小于 0 会产生错误。要设置 SelStart 的值为大于控件中的有效字符数导致其等于控件中字符数的值。

改变 SelStart 属性的值会删除控件中存在的任何选项，在文本中设置插入点，并设置 SelLength 为 0。


SelText 属性

返回或设置控件中选中的文本。

语法

object.SelText [= String]

SelText 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
String	可选的。字符串表达式，包含选中的文本。
说明

如果控件的编辑区没有选中的文本，SelText 属性返回 0 长度的字符串。不论控件是否有焦点，该属性是有效的。


ShowDropButtonWhen 属性

说明何时显示 ComboBox 或 TextBox 的“放下”按钮。

语法

object.ShowDropButtonWhen [= fmShowDropButtonWhen]

ShowDropButtonWhen 属性的句法包括下列部分：

部分	描述
object	需要的。一个合法的对象。
fmShowDropButtonWhen	可选的。显示“放下”按钮的情况。
设置值

fmShowDropButtonWhen 的设置值为：

常数	值	说明
fmShowDropButtonWhenNever	0	在任何情况下都不显示“放下”按钮。
fmShowDropButtonWhenFocus	1	当控件有焦点时显示“放下”按钮。
fmShowDropButtonWhenAlways	2	总显示“放下”按钮。
对于 ComboBox，缺省值是 fmShowDropButtonWhenAlways；对于 TextBox，缺省值是 fmShowDropButtonWhenNever。


SmallChange 属性

规定当用户单击 ScrollBar 或 SpinButton 中的滚动箭头时发生的位移量。

语法

object.SmallChange [= Long]

SmallChange 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
Long	可选的。规定 Value 属性的变化量的整数。
说明

SmallChange 属性没有单位。

该属性可以设置为任意整数。建议范围从 -32,767 到 +32,767。缺省值为 1。


SpecialEffect 属性

指定对象的可视风格。

语法

对于 CheckBox、OptionButton、ToggleButton
object.SpecialEffect [= fmButtonEffect]

对于其它控件
object.SpecialEffect [= fmSpecialEffect]

SpecialEffect 属性语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
fmButtonEffect	可选的。对 CheckBox , OptionButton 或 ToggleButton 所期望的外观。
fmSpecialEffect	可选的。对 CheckBox , OptionButton 和 ToggleButton 之外的控件所期望的外观。
设置

fmSpecialEffect 的设置如下：

常数	值	说明
fmSpecialEffectFlat	0	对象显示为平面的，通过边框、颜色的变化、或同时通过此二者与周围的窗体相区别。对 Image 和 Label 为缺省，对所有控件。
fmSpecialEffectRaised	1	对象的上边和左边具有高亮，下边和右边具有阴影。对复选框和选项按钮无效。
fmSpecialEffectSunken	2	对象上边和左边具有阴影，下边和右边具有高亮。控件及其边框表现为刻入包含它们的窗体。对 CheckBox 和OptionButton 的为缺省，对所有控件合法（缺省）。
fmSpecialEffectEtched	3	边框表现为沿着控件边缘被雕刻。对复选框和选项按钮无效。
fmSpecialEffectBump	6	对象下边和右边隆起，而上边和左边显示为平面的。对复选框或选项按钮无效。
对于 Frame，缺省值是 Sunken。

注意  对于 CheckBox , OptionButton 和 ToggleButton 只有 Flat 和 Sunken （0 和 2）是可接受的。对其它控件，所列值都是可接受的。

说明

可以用 SpecialEffect 或 BorderStyle 属性指定控件的边界形式，但两者不接受的同时使用。如果把其中一个属性指定为非零值，系统就把另一个属性值设置为 0。例如，如果把 SpecialEffect 设置为 fmSpecialEffectRaised，系统就把 BorderStyle 设置为 0 (fmBorderStyleNone)。

对于 Frame，如果 SpecialEffect 等于 fmSpecialEffectFlat，则忽略 BorderStyle。

SpecialEffect 用系统颜色定义它的边界。

注意    虽然 SpecialEffect 属性存在于 ToggleButton 中，但该属性无效。在 ToggleButton 中不能设置或返回该属性的值。


Style 属性

对于 ComboBox，指定用户如何选择或设置控件的值。对于 MultiPage 和 TabStrip，指定控件中标鉴的显示风格。

语法

对于 ComboBox
object.Style [= fmStyle]

对于 MultiPage and TabStrip
object.Style [= fmTabStyle]

Style 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
fmStyle	可选的。指定如何设置 ComboBox 的值。
fmTabStyle	可选的。指定 MultiPage 或 TabStrip 中标鉴的显示风格。
设置

fmStyle 设置如下：

常数	值	说明
fmStyleDropDownCombo	0	ComboBox 是一个下拉式组合框。用户可以在编辑区输入一个值或者缺省时从下拉式列表中选择一个值。
fmStyleDropDownList	2	ComboBox 是一个列表框。用户必须从列表中选择值。
fmTabStyle 设置如下：

常数	值	说明
fmTabStyleTabs	0	在标鉴条中显示标鉴（缺省）。
fmTabStyleButtons	1	在标鉴条中显示按钮。
fmTabStyleNone	2	不显示标鉴条。


TabFixedHeight, TabFixedWidth 属性

设置或返回以磅为单位的标签的固定的高度和宽度。

语法

object.TabFixedHeight [= Single]

object.TabFixedWidth [= Single]

TabFixedHeight 和 TabFixedWidth 属性的语法包含以下部分：

部分	说明
object	必需的。一个有效的对象。
Single	可选的。TabStrip 或 MultiPage 中标签的高度或宽度的点数。
设置

如果值为 0，自动调整标签宽度，使每个标签宽度足够容纳其内容且使每行标签跨越控体的宽度。

若属性值大于 0，所有标签都有该属性指定的统一宽度。

说明

最小尺寸为 4 个点。


TabIndex 属性

指定单个对象在窗体 Tab 键顺序中的位置。

语法

object.TabIndex [= Integer]

TabIndex 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
Integer	可选的。从 0 到比在有 TabIndex 属性的窗体中的控件数少一。如果赋予 TabIndex 的值小于 0，则出错。如果赋予 TabIndex 的值大于最大的索引值，系统将该值重新置为允许的最大值。
说明

在 Tab 键次序中的第一个对象的索引值是 0。


TabKeyBehavior 属性

决定是否允许标签出现在编辑区。

语法

object.TabKeyBehavior [= Boolean]

TabKeyBehavior 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
Boolean	可选的。按 TAB 键的执行效果。
设置

Boolean 设置如下：

值	说明
True	按 TAB 键将在编辑区插入一个 tab 字符。
False	按 TAB 键把焦点移到 Tab 键次序中的下一个对象。
说明

TabKeyBehavior 和 MultiLine 属性密切相关。只有 MultiLine 值为 True 时，上面描述的值才起作用。如果 MultiLine 为 False，不管 TabKeyBehavior 值如何，按 TAB 键总是把焦点 移到 Tab 键顺序中的下一个控件。

按 CTRL+TAB 的执行效果也取决于 MultiLine 的值。当 MultiLine 值为 True 时，不管 TabKeyBehavior 值如何，按 CTRL+TAB 产生一个新行。当 MultiLine 值为 False 时，按 CTRL+TAB 没有作用。


TabOrientation 属性

指定 MultiPage 或 TabStrip 上标签的位置。

语法

object.TabOrientation [= fmTabOrientation]

TabOrientation 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
fmTabOrientation	可选的。标签显示于何处。
设置

fmTabOrientation 的设置如下：

常数	值	说明
fmTabOrientationTop	0	标签显示于控件顶部（缺省值）。
fmTabOrientationBottom	1	标签显示于控件底部。
fmTabOrientationLeft	2	标签显示于控件左边。
fmTabOrientationRight	3	标签显示于控件右边。
说明

如果选用 TrueType 字体，当 TabOrientation 属性设置为 fmTabOrientationLeft 或 fmTabOrientationRight 时，文本将会旋转。如果用位图 (bitmapped) 字体，文本不旋转。


TabStop 属性

指定当用户选中一个对象时，该对象是否能获得焦点 。

语法

object.TabStop [= Boolean]

TabStop 属性的语法包含以下部分：

部分	说明
object	必需的。一个有效的对象。
Boolean	可选的。对象是否一个tab停点。
设置

Boolean 的设置如下：

值	说明
True	指明对象是一个 tab站（缺省值）。
False	即使对象仍处在实际的 Tab 键次序中（由 TabIndex 属性决定），当用户用 TAB 键选择对象时仍然跳过它。


Tag 属性

存储对象的附加信息。

语法

object.Tag [= String]

Tag 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
String	可选的。标识对象的字符串表达式。缺省值为一个空串 ("")。
说明

用 Tag 属性可以给一个对象的标志字符串赋值而不影响其它属性的设置或属性。

例如，可以用 Tag 来检验作为变量传给过程的窗体或控体的标识。


Text 属性

返回或设置 TextBox 的文本。改变 ComboBox 或 ListBox 中选定的行。

语法

object.Text [= String]

Text 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
String	可选的。指定文本的字符串表达式。缺省值是空串 ("")。
说明

对于 TextBox，赋予 Text 属性的任何值也要赋予 Value 属性。

对于 ComboBox，可用 Text 来更新该控件的值。如果 Text 的值与一个现存的列表项目匹配，ListIndex 属性的值（当前行的索引）将设成与 Text 匹配的行。如果 Text 的值不与任何一行匹配，ListIndex 设置为 -1。

对于 ListBox，Text 的值必须与一个现存列表项目匹配。如果指定一个不与任何现存列表项目匹配的值，将产生一个错误。

不能用 Text 改变 ComboBox 或 ListBox 中项目的值，为此使用 Column 或 List 属性。

ForeColor 属性决定文本的颜色。


TextAlign 属性

定义在控件中文本如何对齐。

语法

object.TextAlign [= fmTextAlign]

TextAlign 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
fmTextAlign	可选的。文本在控件中如何对齐。
设置

fmTextAlign 的设置如下：

常数	值	说明
fmTextAlignLeft	1	在控件的显示或编辑区中，对齐所显示文本左边界的第一个字符（缺省值）。
fmTextAlignCenter	2	在控件的显示或编辑区中，使文本中央对齐。
fmTextAlignRight	3	在控件的显示或编辑区中，对齐所显示文本右边界的最后一个字符。
说明

对于 ComboBox，TextAlign 属性只影响编辑区；这一属性，对表格中文本的对齐无影响。对独立标签，TextAlign 决定了标签标题的对齐方式。


TextColumn 属性

标识 ComboBox 或 ListBox 中显示给用户的列。

语法

object.TextColumn [= Variant]

TextColumn 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
Variant	可选的。显示的列。
设置

TextColumn 属性的值域从 -1 到表中的列数。第一列的 TextColumn 值是 1，第二列的 TextColumn 值是 2，以此类推。将 TextColumn 的值设置为 0 则显示 ListIndex 的值。将 TextColumn 的值设置为 -1 则显示 ColumnWidths 值大于 0 的第一列。

说明

当用户从 ComboBox 或 ListBox 中选择一行后，由 TextColumn 所参照的那一列就被存到 Text 属性中。例如，可以建立一个多列 ListBox，其中第一列包含假期的名字，第二列包含假期的日期。要想为用户显示假期的名字，则应指定第一列为 TextColumn；要想存储假期的日期，则应指定第二列为 BoundColumn。

当 ComboBox 的 Text 属性发生变化时（例如当一个用户往控件中输入了一个条目），新文本会与 TextColumn 指定的数据列表进行对照。


TextLength 属性

返回 TextBox 或 ComboBox 的编辑区中，以字符数表示的文本的长度。

语法

object.TextLength

TextLength 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
说明

TextLength 属性是只读的。对于多行的 TextBox，TextLength 包括 LF（换行）和 CR（回车）字符。


TopIndex 属性

设置和返回出现在表格最顶端位置的项目。

语法

object.TopIndex [= Variant]

TopIndex 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
Variant	可选的。出现在顶端位置的表项的号，缺省值是 0 或表中第一个项目。
设置

如果表是空的或未被显示，返回值为 -1。


TransitionEffect 属性

当从一页变换到另一页时，定义对用户来说可视的影响。

语法

object.TransitionEffect [= fmTransitionEffect]

TransitionEffect 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
fmTransitionEffect	可选的。所希望的在页间转换的影响。
设置

fmTransitionEffect 的设置如下：

常数	值	说明
fmTransitionEffectNone	0	无特别影响（缺省值）。
fmTransitionEffectCoverUp	1	新页自底向顶移动覆盖旧页。
fmTransitionEffectCoverRightUp	2	新页自左下角向右上角移动覆盖旧页。
fmTransitionEffectCoverRight	3	新页自左向右移动覆盖旧页。
fmTransitionEffectCoverRightDown	4	新页自左上角向右下角移动覆盖旧页。
fmTransitionEffectCoverDown	5	新页自顶向底移动覆盖旧页。
fmTransitionEffectCoverLeftDown	6	新页自右上角向左下角移动覆盖旧页。
fmTransitionEffectCoverLeft	7	新页自右向左移动覆盖旧页。
fmTransitionEffectCoverLeftUp	8	新页自右下角向左上角移动覆盖旧页。
fmTransitionEffectPushUp	9	新页从底向顶推动旧页移出视线。
fmTransitionEffectPushRight	10	新页从左向右推动旧页移出视线。
fmTransitionEffectPushDown	11	新页从顶向底推动旧页移出视线。
fmTransitionEffectPushLeft	12	新页从右向左推动旧页移出视线。
说明

使用 TransitionPeriod 属性指定转换影响的历时。


TransitionPeriod 属性

以毫秒为单位定义一个转换影响的历时长度。

语法

object.TransitionPeriod [= Long]

TransitionPeriod 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
Long	可选的。完成从一页到另一页的转换需要的时间。
说明

为此属性设置的任何从 0 到 10000 的整数都是有效的。TransitionPeriod 属性设置为 0，则不产生转换影响；TransitionPeriod 属性设置为 10000，产生一个 10 秒的转换。


TripleState 属性

决定用户是否能从用户界面，为 CheckBox或 ToggleButton 指定 Null状态。

语法

object.TripleState [= Boolean]

TripleState 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
Boolean	可选的。控件是否支持 Null 状态。
设置

Boolean 的设置如下：

值	说明
True	按钮可在三个状态中选择。
False	按钮只支持 True 和 False（缺省值）。
说明

虽然 OptionButton 中存在 TripleState 属性，但是属性是无效的。无论 TripleState 的值是什么，都不能通过用户界面把控件设置为 Null。

当 TripleState 属性为 True 时，用户可从 Null , True 和 False 三个值中选择。Null 值以一个阴影按钮的形式显示。

当 TripleState 为 False 时，用户只能在 True 或 False 二者中选一。

设置为 Null 的控件不能激活 Click 事件。

不管属性的值如何，总是可以以编程方式把 CheckBox 或 ToggleButton 赋值为 Null，迫使控件显示为阴影。


Value 属性

定义某指定的控件的状态或内容。

语法

object. Value [= Variant]

Value 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
Variant	可选的。控件的状态或内容。
设置

Control	说明
CheckBox	一个整数，说明此项目是否被选中。
	Null   说明此项目处于 null 状态，既未被选中                      也未被清除。
	-1   True。说明此项目被选中。
	0   False。说明此项目被清除。
OptionButton	同 CheckBox。
ToggleButton	同 CheckBox。
ScrollBar	Max 和 Min 属性规定的数值之间的一个整数。
SpinButton	同 ScrollBar。
ComboBox, ListBox	当前被选中行的 BoundColumn 中的值。
CommandButton	总为 False。
MultiPage	标识当前活动页的整数。
	Zero (0) 表示是第一页。最大值比总页数少一。
TextBox	编辑区中的文本。
说明

对于 CommandButton，在一个宏或过程中将 Value 属性设置为 True，将激活按钮的 Click 事件。

对于 ComboBox，改变 Value 的内容，BoundColumn 的值不会随之改变。要想在 ComboBox 中增加或删除条目，可以用 AddItem 或 RemoveItem 方法。

Value 不能用在多选列表框。


VerticalScrollbarSide 属性

规定垂直滚动条出现在一个窗体或一页的右边还是左边。

语法

object.VerticalScrollbarSide [= fmVerticalScrollbarSide]

VerticalScrollbarSide 属性的语法包括以下部分：

部分	说明
object	必需的。一个有效的对象。
fmVerticalScrollbarSide	可选的。滚动条出现的地方。
设置

fmVerticalScrollbarSide 的设置如下：

常数	值	说明
fmVerticalScrollbarSideRight	0	将滚动条放在右边（缺省值）。
fmVerticalScrollBarSideLeft	1	将滚动条放在左边。
说明

如果窗体是在从右向左读的环境下使用，VerticalScrollBarSide 属性特别有用。


Visible 属性

定义一个对象是可视的或是被隐藏的。

语法

object.Visible [= Boolean]

Visible 属性语法有以下几部分：

部分	说明
object	必需的。一个有效的对象。
Boolean	可选的。对象是可视的或是被隐含的。
设置

Boolean 的设置如下：

值	说明
True	对象是可视的（缺省）。
False	对象是隐藏的。
说明

使用 Visible 属性无需显示信息就可以控制对信息的访问。例如，可以用隐藏窗体上的控件的值作为查询的条件。

所有控件在设计时都是可视的。


WordWrap 属性

指出一个控件的内容在行末是否自动卷行。

语法

object.WordWrap [= Boolean]

WordWrap 属性语法有以下几部分：

部分	说明
object	必需的。一个有效的对象。
Boolean	可选的。控件是否扩展以填充文本。
设置

Boolean 的设置如下：

值	说明
True	文本卷行（缺省）。
False	文本不卷行。
说明

对于既支持 WordWrap 属性又支持 MultiLine 属性的控件，当 MultiLine 为 False 时，WordWrap 被忽略。


Zoom 属性

规定显示对象的大小有多大变化。

语法

object.Zoom [= Integer]

Zoom 属性语法有以下几部分：

部分	说明
object	必需的。一个有效的对象。
Integer	可选的。所显示图象扩大或缩小的百分比。
说明

Zoom 属性的值规定了图象放大或缩小的百分比，图象大小按照这个百分比变化。从 10 到 400 之间的值都是合法的。指定的值是相对于对象原来大小的百分比。因此，设置值为 400 意味着希望将图象放大为原图象的 4 倍（或 400 ％）。同样设置值为 10 意味着希望将图象缩小为原图象的十分之一（或 10 ％）。


Item 方法示例

下面的示例，用 Item 方法访问 Controls 和 Pages 集合中的单个成员。用户或者选择 Controls 集合的选项按钮，或者选择 MultiPage 的选项按钮，然后单击 CommandButton。则在 Label 中返回相应的控件名称。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 CommandButton1 的 CommandButton。

• 	名为 Label1 的 Label。

• 	名为 OptionButton1 和 OptionButton2 的 OptionButton。

• 	名为 MultiPage1 和 MultiPage。

Dim MyControl As Object

Dim ControlsIndex As Integer

Private Sub CommandButton1_Click()

    If OptionButton1.Value = True Then

        '处理用户窗体的控件集合

        Set MyControl = Controls.Item(ControlsIndex)

        Label1.Caption = MyControl.Name

        '为用户窗体上的下一个控件准备索引

        ControlsIndex = ControlsIndex + 1

        If ControlsIndex >= Controls.Count Then

            ControlsIndex = 0

        End If

    ElseIf OptionButton2.Value = True Then

        '处理页面集合的当前页面

        Set MyControl = MultiPage1.Pages.Item(MultiPage1.Value)

        Label1.Caption = MyControl.Name

    End If

End Sub

Private Sub UserForm_Initialize()

    ControlsIndex = 0

    'TabsIndex = 0

    OptionButton1.Caption = "Controls Collection"

    OptionButton2.Caption = "Pages Collection"

    OptionButton1.Value = True

    CommandButton1.Caption = "Get Member Name"

End Sub


Object 属性示例

假定一个新的控件，具有和 Microsoft 窗体的标准 Top 属性不同的 Top 属性。用户可使用下面两个属性中的任一个，语法如下：

• 	control.Top 使用标准的 Top 属性。

• 	control.Object.Top 使用来自新增控件的 Top 属性。


TabStop 属性示例

下面的示例，使用 TabStop 属性来控制是否可以通过按 TAB 键，将焦点移动到特定的控件。用户按 TAB 键，使焦点在窗体上的控件中间移动，然后单击 ToggleButton 以改变 CommandButton1 的 TabStop 属性。当 TabStop 为 False，CommandButton1 将不接受用 TAB 键移来的焦点。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 CommandButton1 的 CommandButton。

• 	名为 ToggleButton1 的 ToggleButton。

• 	一至二个其它控件，如 OptionButton 或 ListBox。

Private Sub CommandButton1_Click()

    MsgBox "Clicked CommandButton1."

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1 = True Then

        CommandButton1.TabStop = True

        ToggleButton1.Caption = "TabStop On"

    Else

        CommandButton1.TabStop = False

        ToggleButton1.Caption = "TabStop Off"

    End If

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Show Message"

    ToggleButton1.Caption = "TabStop On"

    ToggleButton1.Value = True

    ToggleButton1.Width = 90

End Sub


TakeFocusOnClick 属性示例

下面的示例，用 TakeFocusOnClick 属性来控制：当单击 CommandButton 时，该 CommandButton 是否接收焦点。用户先单击一个不是 CommandButton1 的其它控件，然后再单击 CommandButton1。如果 TakeFocusOnClick 是 True，在单击 CommandButton1 后，CommandButton1 将接收焦点。可以通过单击 ToggleButton 来改变 TakeFocusOnClick 的值。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 CommandButton1 的 CommandButton。

• 	名为 ToggleButton1 的 ToggleButton。

• 	一至二个其它控件，如 OptionButton 或 ListBox。

Private Sub CommandButton1_Click()

    MsgBox "Watch CommandButton1 to see if it takes the focus."

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1 = True Then

        CommandButton1.TakeFocusOnClick = True

        ToggleButton1.Caption = "TakeFocusOnClick On"

    Else

        CommandButton1.TakeFocusOnClick = False

        ToggleButton1.Caption = "TakeFocusOnClick Off"

    End If

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Show Message"

    ToggleButton1.Caption = "TakeFocusOnClick On"

    ToggleButton1.Value = True

    ToggleButton1.Width = 90

End Sub


MatchEntry 属性示例

下面的示例，用 MatchEntry 属性演示对于 ComboBox 和 ListBox 可用的字符匹配。在这个示例中，可以设置与 OptionButton 控件匹配的类型，然后键入到 ComboBox 中，从其列表中指定一项。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 OptionButton1 到 OptionButton3 的三个 OptionButton 控件。

• 	名为 ComboBox1 的 ComboBox。

Private Sub OptionButton1_Click()

    ComboBox1.MatchEntry = fmMatchEntryNone

End Sub

Private Sub OptionButton2_Click()

    ComboBox1.MatchEntry = fmMatchEntryFirstLetter

End Sub

Private Sub OptionButton3_Click()

        ComboBox1.MatchEntry = fmMatchEntryComplete

End Sub

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 9

        ComboBox1.AddItem "Choice " & i

    Next i

    ComboBox1.AddItem "Chocoholic"

    OptionButton1.Caption = "No matching"

    OptionButton1.Value = True

    OptionButton2.Caption = "Basic matching"

    OptionButton3.Caption = "Extended matching"

End Sub


MatchFound, MatchRequired 属性示例

下面的示例，用 MatchFound 和 MatchRequired 属性来演示 ComboBox 的附加的字符匹配。匹配校验发生于 Change 事件中。

在这个例子中，用户指定 ComboBox 的文本部分是否必须与 ComboBox 中的所列表项之一匹配。用户可以利用 CheckBox 来指定是否要求匹配，然后键入到 ComboBox 中，从其列表中指定一项。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 ComboBox1 的 ComboBox。

• 	名为 CheckBox1 的 CheckBox。

Private Sub CheckBox1_Click()

    If CheckBox1.Value = True Then

        ComboBox1.MatchRequired = True

        MsgBox "To move the focus from the ComboBox, you must match an entry in the list or press ESC."

    Else

        ComboBox1.MatchRequired = False

        MsgBox " To move the focus from the ComboBox, just tab to or click another control. Matching is optional."

    End If

End Sub

Private Sub ComboBox1_Change()

    If ComboBox1.MatchRequired = True Then

    'MSForms 自动处理这种情况

    Else

        If ComboBox1.MatchFound = True Then

            MsgBox "Match Found; matching optional."

        Else

            MsgBox "Match not Found; matching optional."

        End If

    End If

End Sub

Private Sub UserForm_Initialize()

Dim i As Integer

For i = 1 To 9

    ComboBox1.AddItem "Choice " & i

Next i

ComboBox1.AddItem "Chocoholic"

CheckBox1.Caption = "MatchRequired"

CheckBox1.Value = True

End Sub


MultiSelect, Selected 属性示例

下面的示例，用 MultiSelect 和 Selected 属性来演示用户如何在 ListBox 中选一项或多项。用户通过选中选项按钮来指定选择的方法，然后在 ListBox 中选择一项或多项。单击 CommandButton 可以在第二个 ListBox 中显示所选的项。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 ListBox1 和 ListBox2 的两个 ListBox 控件。

• 	名为 CommandButton1 的 CommandButton。

• 	名为 OptionButton1 到 OptionButton3 的三个 OptionButton 控件。

Dim i As Integer

Private Sub CommandButton1_Click()

    ListBox2.Clear

    For i = 0 To 9

        If ListBox1.Selected(i) = True Then

            ListBox2.AddItem ListBox1.List(i)

        End If

    Next i

End Sub

Private Sub OptionButton1_Click()

    ListBox1.MultiSelect = fmMultiSelectSingle

End Sub

Private Sub OptionButton2_Click()

    ListBox1.MultiSelect = fmMultiSelectMulti

End Sub

Private Sub OptionButton3_Click()

    ListBox1.MultiSelect = fmMultiSelectExtended

End Sub

Private Sub UserForm_Initialize()

    For i = 0 To 9

        ListBox1.AddItem "Choice " & (ListBox1.ListCount + 1)

    Next i

    OptionButton1.Caption = "Single Selection"

    ListBox1.MultiSelect = fmMultiSelectSingle

    OptionButton1.Value = True

    OptionButton2.Caption = "Multiple Selection"

    OptionButton3.Caption = "Extended Selection"

    CommandButton1.Caption = "Show selections"

    CommandButton1.AutoSize = True

End Sub


ComboBox 的 Style 属性示例

下面的示例，用 Style 属性来改变 ComboBox 的文本区域内的键入效果。通过选中一个 OptionButton 控件来选取一种样式，然后键入 ComboBox 来选择一项。当 Style 是 fmStyleDropDownList 时，必须从下拉列表中选择一项。当 Style 是 fmStyleDropDownCombo 时，可以键入字符到文本区域，指定下拉列表中的一项。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 OptionButton1 和 OptionButton2 的两个 OptionButton 控件。

• 	名为 ComboBox1 的 ComboBox。

Private Sub OptionButton1_Click()

    ComboBox1.Style = fmStyleDropDownCombo

End Sub

Private Sub OptionButton2_Click()

    ComboBox1.Style = fmStyleDropDownList

End Sub

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 10

        ComboBox1.AddItem "Choice " & i

    Next i

    OptionButton1.Caption = "Select like ComboBox"

    OptionButton1.Value = True

    ComboBox1.Style = fmStyleDropDownCombo

    OptionButton2.Caption = "Select like ListBox"

End Sub


MultiPage 和 TabStrip 的 Style 属性示例

下面的示例，用 Style 属性来指定 MultiPage 和 TabStrip 中的标签的外观。这个示例还演示了如何使用 Label。用户通过选择 OptionButton 来选取样式。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 Label1 的 Label。

• 	名为 OptionButton1 到 OptionButton3 的三个 OptionButton 控件。

• 	名为 MultiPage1 的 MultiPage。

• 	名为 TabStrip1 的 TabStrip。

• 	TabStrip 之中的任一控件。

• 	在 MultiPage 每一页中的任一控件。

Private Sub OptionButton1_Click()

    MultiPage1.Style = fmTabStyleTabs

    TabStrip1.Style = fmTabStyleTabs

End Sub

Private Sub OptionButton2_Click()

    '注意页面边界是看不见的

    MultiPage1.Style = fmTabStyleButtons

    TabStrip1.Style = fmTabStyleButtons

End Sub

Private Sub OptionButton3_Click()

    '注意页面边界是看不见的

    '并且页面体开始于标签正常出现处

    MultiPage1.Style = fmTabStyleNone

    TabStrip1.Style = fmTabStyleNone

End Sub

Private Sub UserForm_Initialize()

    Label1.Caption = "Page/Tab Style"

    OptionButton1.Caption = "Tabs"

    OptionButton1.Value = True

    MultiPage1.Style = fmTabStyleTabs

    TabStrip1.Style = fmTabStyleTabs

    OptionButton2.Caption = "Buttons"

    OptionButton3.Caption = "No Tabs or Buttons"

End Sub


OldLeft, OldTop, OldHeight, OldWidth 属性示例

下面的示例，在 Layout 事件内部使用 OldLeft , OldTop , OldHeight 和 OldWidth 属性，使得控件保持在它的当前位置上而且大小不变。单击标签为“移动 ComboBox”的 CommandButton 来移动控件，然后响应一个信息框。可以单击标签为“复位 ComboBox” 的 CommandButton 来为另一个副本复位控件。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 CommandButton1 和 CommandButton2 的两个 CommandButton 控件。

• 	名为 ComboBox1 的 ComboBox。

Dim Initialize As Integer

Dim ComboLeft, ComboTop, ComboWidth, ComboHeight As Integer

Private Sub UserForm_Initialize()

    Initialize = 0

    CommandButton1.Caption = "Move ComboBox"

    CommandButton2.Caption = "Reset ComboBox"

    '复位组合框的信息

    ComboLeft = ComboBox1.Left

    ComboTop = ComboBox1.Top

    ComboWidth = ComboBox1.Width

    ComboHeight = ComboBox1.Height

End Sub

Private Sub CommandButton1_Click()

        ComboBox1.Move 0, 0, , , True

End Sub

Private Sub UserForm_Layout()

    Dim MyControl As Control

    Dim MsgBoxResult As Integer

    If Initialize = 0 Then   '初始 layout 事件时不输出 MsgBox。

        Initialize = 1

        Exit Sub

    End If

    MsgBoxResult = MsgBox("In Layout event - Continue move?", vbYesNo)

    If MsgBoxResult = vbNo Then

        ComboBox1.Move ComboBox1.OldLeft, ComboBox1.OldTop, ComboBox1.OldWidth, ComboBox1.OldHeight

    End If

End Sub

Private Sub CommandButton2_Click()

    ComboBox1.Move ComboLeft, ComboTop, ComboWidth, ComboHeight

    '这里不识别 OldLeft、OldTop、OldWidth 和 OldHeight。

    '下面的语句，如果不加注释符会在运行时产生错误。

    'ComboBox1.Move ComboBox1.OldLeft, ComboBox1.OldTop, ComboBox1.OldWidth, ComboBox1.OldHeight

End Sub


TabFixedHeight, TabFixedWidth 属性示例

下面的示例，用 TabFixedHeight 和 TabFixedWidth 属性，设置用在 MultiPage 和 TabStrip 中的标签的尺寸。单击 SpinButton 控件来调整 MultiPage 和 TabStrip 中标签的高度和宽度。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 MultiPage1 的 MultiPage。

• 	名为 TabStrip1 的 TabStrip。

• 	名为 Label1 的 Label，用于宽度控制。

• 	名为 SpinButton1 的 SpinButton，用于宽度控制。

• 	名为 TextBox1 的 TextBox，用于宽度控制。

• 	名为 Label2 的 Label，用于高度控制。

• 	名为 SpinButton2 的 SpinButton，用于高度控制。

• 	名为 TextBox2 的 TextBox，用于高度控制。

Private Sub UpdateTabWidth()

    TextBox1.Text = SpinButton1.Value

    TabStrip1.TabFixedWidth = SpinButton1.Value

    MultiPage1.TabFixedWidth = SpinButton1.Value

End Sub

Private Sub UpdateTabHeight()

    TextBox2.Text = SpinButton2.Value

    TabStrip1.TabFixedHeight = SpinButton2.Value

    MultiPage1.TabFixedHeight = SpinButton2.Value

End Sub

Private Sub UserForm_Initialize()

    MultiPage1.Style = fmTabStyleButtons

    Label1.Caption = "Tab Width"

    SpinButton1.Min = 0

    SpinButton1.Max = TabStrip1.Width / TabStrip1.Tabs.Count

    SpinButton1.Value = 0

    TextBox1.Locked = True

    UpdateTabWidth

    Label2.Caption = "Tab Height"

    SpinButton2.Min = 0

    SpinButton2.Max = TabStrip1.Height

    SpinButton2.Value = 0

    TextBox2.Locked = True

    UpdateTabHeight

End Sub

Private Sub SpinButton1_SpinDown()

    UpdateTabWidth

End Sub

Private Sub SpinButton1_SpinUp()

    UpdateTabWidth

End Sub

Private Sub SpinButton2_SpinDown()

    UpdateTabHeight

End Sub

Private Sub SpinButton2_SpinUp()

    UpdateTabHeight

End Sub


TabIndex 属性示例

下面的示例，用 TabIndex 属性来显示和设置单个控件的 tab 顺序。按 TAB 键可以到达 tab 顺序中的下一个控件，并显示此控件的 TabIndex。也可以单击控件来显示其 TabIndex。在 TextBox 中指定一个新的索引值然后单击 CommandButton3，可以改变控件的 TabIndex。改变一个控件的 TabIndex，将同时更新这个 Frame 中其它控件的 TabIndex。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 Label1 的 Label。

• 	名为 TextBox1 的 TextBox。

• 	名为 Frame1 的 Frame。

• 	在 Frame 中的名为 TextBox2 的 TextBox。

• 	在 Frame 中的名为 CommandButton1 和 CommandButton2 的两个 CommandButton 控件。

• 	在 Frame 中的名为 ScrollBar1 的 ScrollBar。

• 	名为 CommandButton3 的 CommandButton（不在 Frame 中）。

Private Sub MoveToFront()

    Dim i, Temp As Integer

    Temp = Frame1.ActiveControl.TabIndex

    For i = 0 To Temp - 1

        Frame1.Controls.Item(i).TabIndex = i + 1

    Next i

    Frame1.ActiveControl.TabIndex = 0

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub

Private Sub CommandButton3_Click()

    Dim i, Temp As Integer

    If IsNumeric(TextBox1.Text) Then

        Temp = Val(TextBox1.Text)

        If Temp >= Frame1.Controls.Count Or Temp < 0 Then

            '输入超出了范围；控件移至 tab 顺序的前面

            MoveToFront

        ElseIf Temp > Frame1.ActiveControl.TabIndex Then

            '条目下移

            For i = Frame1.ActiveControl.TabIndex + 1 To Temp

                Frame1.Controls.Item(i).TabIndex = i - 1

            Next i

            Frame1.ActiveControl.TabIndex = Temp

            TextBox1.Text = Frame1.ActiveControl.TabIndex

        Else

            '条目上移

            For i = Frame1.ActiveControl.TabIndex - 1 To Temp

                Frame1.Controls.Item(i).TabIndex = i + 1

            Next i

            Frame1.ActiveControl.TabIndex = Temp

            TextBox1.Text = Frame1.ActiveControl.TabIndex

        End If

    Else

        '文本输入；控件被移至 tab 顺序的前面。

        MoveToFront

    End If

End Sub

Private Sub UserForm_Initialize()

    Label1.Caption = "TabIndex"

    Frame1.Controls(0).SetFocus

    TextBox1.Text = Frame1.ActiveControl.TabIndex

    Frame1.Cycle = fmCycleCurrentForm

    CommandButton3.Caption = "Set TabIndex"

    CommandButton3.TakeFocusOnClick = False

End Sub

Private Sub TextBox2_Enter()

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub

Private Sub CommandButton1_Enter()

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub

Private Sub CommandButton2_Enter()

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub

Private Sub ScrollBar1_Enter()

    TextBox1.Text = Frame1.ActiveControl.TabIndex

End Sub


Layout 事件和 LayoutEffect 属性示例

下面的示例，用 Move 方法在窗体上移动选定的控件，并用 Layout 事件和 LayoutEffect 属性来标识被移动的控件（并改变 UserForm 的布局）。为了移动，可单击一控件，然后再单击 CommandButton。信息框显示正在移动的控件名称。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分，该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 ComboBox1 的 ComboBox。

• 	名为 OptionButton1 的 OptionButton。

• 	名为 CommandButton1 的 CommandButton。

• 	名为 ToggleButton1 的 ToggleButton。

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Move current control"

    CommandButton1.AutoSize = True

    CommandButton1.TakeFocusOnClick = False

    ToggleButton1.Caption = "Use Layout Event"

    ToggleButton1.Value = True

End Sub

Private Sub CommandButton1_Click()

    If ActiveControl.Name = "ToggleButton1" Then

        '保持静止

    Else

        '当 ToggleButton1.Value 为 True 时，用 Layout 事件移动控件。

        ActiveControl.Move 0, 0, , , ToggleButton1.Value

    End If

End Sub

Private Sub UserForm_Layout()

    Dim MyControl As Control

    MsgBox "In the Layout Event"

    '查找正在移动的控件。

    For Each MyControl In Controls

        If MyControl.LayoutEffect = fmLayoutEffectInitiate Then

            MsgBox MyControl.Name & " is moving."

            Exit For

        End If

    Next

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        ToggleButton1.Caption = "Use Layout Event"

    Else

        ToggleButton1.Caption = "No Layout Event"

    End If

End Sub


Tag 属性示例

下面的示例，使用 Tag 属性来储存 UserForm 上每一控件的其它信息。用户单击一控件，然后单击 CommandButton。有关控件的 Tag 的内容被返回 TextBox 中。

要使用这个例子，把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 CommandButton1 的 CommandButton。

• 	名为 ScrollBar1 的 ScrollBar。

• 	名为 ComboBox1 的 ComboBox。

• 	名为 MultiPage1 的 MultiPage。

Private Sub CommandButton1_Click()

    TextBox1.Text = ActiveControl.Tag

End Sub

Private Sub UserForm_Initialize()

    TextBox1.Locked = True

    TextBox1.Tag = "Display area for Tag properties.

    TextBox1.AutoSize = True

    CommandButton1.Caption = "Show Tag of Current Control."

    CommandButton1.AutoSize = True

    CommandButton1.WordWrap = True

    CommandButton1.TakeFocusOnClick = False

    CommandButton1.Tag = "Shows tag of control that has the focus."

    ComboBox1.Style = fmStyleDropDownList

    ComboBox1.Tag = "ComboBox Style is that of a ListBox."

    ScrollBar1.Max = 100

    ScrollBar1.Min = -273

    ScrollBar1.Tag = "Max = " & ScrollBar1.Max & " , Min = " & ScrollBar1.Min

    MultiPage1.Pages.Add

    MultiPage1.Pages.Add

    MultiPage1.Tag = "This MultiPage has " & MultiPage1.Pages.Count & " pages."

End Sub


TopIndex 属性示例

下面的示例，识别显示在 ListBox 中的顶层项目和在 ListBox 内具有焦点的项目。这个例子使用 TopIndex 属性识别显示在 ListBox 顶部的项目，使用 ListIndex 属性来识别具有焦点的项目。用户在 ListBox 中选定一个项目。当用户选定项目或当用户单击 CommandButton 时，TopIndex 和 ListIndex 的显示值被更新。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Label1 的 Label。

• 	名为 TextBox1 的 TextBox。

• 	名为 Label2 的 Label。

• 	名为 TextBox2 的 TextBox。

• 	名为 CommandButton1 的 CommandButton。

• 	名为 ListBox1 的 ListBox。

Private Sub CommandButton1_Click()

    ListBox1.TopIndex = ListBox1.ListIndex

    TextBox1.Text = ListBox1.TopIndex

    TextBox2.Text = ListBox1.ListIndex

End Sub

Private Sub ListBox1_Change()

    TextBox1.Text = ListBox1.TopIndex

    TextBox2.Text = ListBox1.ListIndex

End Sub

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 0 To 24

        ListBox1.AddItem "Choice " & (i + 1)

    Next i

    ListBox1.Height = 66

    CommandButton1.Caption = "Move to top of list"

    CommandButton1.AutoSize = True

    CommandButton1.TakeFocusOnClick = False

    Label1.Caption = "Index of top item"

    TextBox1.Text = ListBox1.TopIndex

    Label2. Caption = "Index of current item"

    Label2.AutoSize = True

    Label2.WordWrap = False

    TextBox2.Text = ListBox1.ListIndex

End Sub


TripleState 属性示例

下面的示例，使用 TripleState 属性允许 Null 作为 CheckBox 和 ToggleButton 的一个合法值。用户通过 ToggleButton2 控制 TripleState 的值。用户可根据 TripleState 的值来设置 CheckBox 或 ToggleButton 的值。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含 ：

• 	名为 CheckBox1 的 CheckBox。

• 	名为 ToggleButton1 的 ToggleButton。

• 	名为 ToggleButton2 的 ToggleButton。

Private Sub UserForm_Initialize()

    CheckBox1.Caption = "Value is True"

    CheckBox1.Value = True

    CheckBox1.TripleState = False

    ToggleButton1.Caption = "Value is True"

    ToggleButton1.Value = True

    ToggleButton1.TripleState = False

    ToggleButton2.Value = False

    ToggleButton2.Caption = "Triple State Off"

End Sub

Private Sub ToggleButton2_Click()

    If ToggleButton2.Value = True Then

        ToggleButton2.Caption = "Triple State On"

        CheckBox1.TripleState = True

        ToggleButton1.TripleState = True

    Else

        ToggleButton2.Caption = "Triple State Off"

        CheckBox1.TripleState = False

        ToggleButton1.TripleState = False

    End If

End Sub

Private Sub CheckBox1_Change()

    If IsNull(CheckBox1.Value) Then

        CheckBox1.Caption = "Value is Null"

    ElseIf CheckBox1.Value = False Then

        CheckBox1.Caption = "Value is False"

    ElseIf CheckBox1.Value = True Then

        CheckBox1.Caption = "Value is True"

    End If

End Sub

Private Sub ToggleButton1_Change()

    If IsNull(ToggleButton1.Value) Then

        ToggleButton1.Caption = "Value is Null"

    ElseIf ToggleButton1.Value = False Then

        ToggleButton1.Caption = "Value is False"

    ElseIf ToggleButton1.Value = True Then

        ToggleButton1.Caption = "Value is True"

    End If

End Sub


Value 属性示例

下面的示例，通过显示选定控件的 Value 属性，演示不同类型的控件能够具有的值。通过按 TAB 键或在控件上单击，用户可以选中控件。根据控件的类型，用户可以通过以下几种方式为控件确定一个值，在控件文本区中键入、在控件上单击一次或多次、或者在控件内选定一项目、页或标签。用户通过单击相应标签的 CommandButton 来显示选定控件的值。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 CommandButton1 的 CommandButton。

• 	名为 TextBox1 的 TextBox。

• 	名为 CheckBox1 的 CheckBox。

• 	名为 ComboBox1 的 ComboBox。

• 	名为 CommandButton2 的 CommandButton。

• 	名为 ListBox1 的 ListBox。

• 	名为 MultiPage1 的 MultiPage。

• 	名为 OptionButton1 和 OptionButton2 的两个 OptionButton 控件。

• 	名为 ScrollBar1 的 ScrollBar。

• 	名为 SpinButton1 的 SpinButton。

• 	名为 TabStrip1 的 TabStrip。

• 	名为 TextBox2 的 TextBox。

• 	名为 ToggleButton1 的 ToggleButton。

Dim i As Integer

Private Sub CommandButton1_Click()

    TextBox1.Text = "Value of " & ActiveControl.Name & " is " & ActiveControl.Value

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Get value of current control"

    CommandButton1.AutoSize = True

    CommandButton1.TakeFocusOnClick = False

    CommandButton1.TabStop = False

    TextBox1.AutoSize = True

    For i = 0 To 10

        ComboBox1.AddItem "Choice " & (i + 1)

        ListBox1.AddItem "Selection " & (100 - i)

    Next i

    CheckBox1.TripleState = True

    ToggleButton1.TripleState = True

    TextBox2.Text = "Enter text here."

End Sub


KeyPress 事件示例

下面的示例，使用 KeyPress 事件来把击键值从一个 TextBox 复制到第二个 TextBox 中。用户在相应标记的 TextBox 中键入。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 和 TextBox2 的两个 TextBox 控件。

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    TextBox2.Text = TextBox2.Text & Chr(KeyAscii)

    '为处理键组合（使用 SHIFT，CTRL，ALT 与其它键），

    '或 TAB 或 ENTER 键，使用 KeyDown 或 KeyUp 事件。

End Sub

Private Sub UserForm_Initialize()

    Move 0, 0, 570, 380

    TextBox1.Move 30, 40, 220, 160

    TextBox1.MultiLine = True

    TextBox1.WordWrap = True

    TextBox1.Text = "Type text here."

    TextBox1.EnterKeyBehavior = True

    TextBox2.Move 298, 40, 220, 160

    TextBox2.MultiLine = True

    TextBox2.WordWrap = True

    TextBox2.Text = "Typed text copied here."

    TextBox2.Locked = True

 End Sub


Zoom 事件示例

下面的示例，使用 Zoom 事件来计算 Zoom 属性的新值，并在适当的时候把滚动条加到窗体。这个例子使用 Label 来显示当前数值。用户通过 SpinButton 确定窗体的尺寸，然后单击 CommandButton，设置 Zoom 属性中的数值。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Label1 的 Label。

• 	名为 SpinButton1 的 SpinButton。

• 	名为 CommandButton1 的 CommandButton。

• 	其它控件放置在靠近窗体边缘的位置。

Private Sub CommandButton1_Click()

    Zoom = SpinButton1.Value

End Sub

Private Sub SpinButton1_SpinDown()

    Label1.Caption = SpinButton1.Value

End Sub

Private Sub SpinButton1_SpinUp()

    Label1.Caption = SpinButton1.Value

End Sub

Private Sub UserForm_Initialize()

    SpinButton1.Min = 10

    SpinButton1.Max = 400

    SpinButton1.Value = 100

    Label1.Caption = SpinButton1.Value

    CommandButton1.Caption = "Zoom it!"

End Sub

Private Sub UserForm_Zoom(Percent As Integer)

    Dim MyResult As Double

    If Percent > 99 Then

        ScrollBars = fmScrollBarsBoth

        ScrollLeft = 0

        ScrollTop = 0

        MyResult = Width * Percent / 100

        ScrollWidth = MyResult

        MyResult = Height * Percent / 100

        ScrollHeight = MyResult

    Else

        ScrollBars = fmScrollBarsNone

        ScrollLeft = 0

        ScrollTop = 0

    End If

End Sub


Max, Min 和 MaxLength 属性示例

下面的示例，演示当与独立 ScrollBar 一起使用时的 Max 和 Min 属性。用户可以将 Max 和 Min 的值设置为从 -1000 到 1000 范围内的任意整数。这个例子还使用 MaxLength 属性来限制为 Max 和 Min 值输入的字符数。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Label1 的 Label 和名为 TextBox1 的 TextBox。

• 	名为 Label2 的 Label 和名为 TextBox2 的 TextBox,

• 	名为 ScrollBar1 的 ScrollBar。

• 	名为 Label3 的 Label。

Dim TempNum As Integer

Private Sub UserForm_Initialize()

    Label1.Caption = "Min -1000 to 1000"

    ScrollBar1.Min = -1000

    TextBox1.Text = ScrollBar1.Min

    TextBox1.MaxLength = 5

    Label2.Caption = "Max -1000 to 1000"

    ScrollBar1.Max = 1000

    TextBox2.Text = ScrollBar1.Max

    TextBox2.MaxLength = 5

    ScrollBar1.SmallChange = 1

    ScrollBar1.LargeChange = 100

    ScrollBar1.Value = 0

    Label3.Caption = ScrollBar1.Value

End Sub

Private Sub TextBox1_Change()

    If IsNumeric(TextBox1.Text) Then

        TempNum = CInt(TextBox1.Text)

        If TempNum >= -1000 And TempNum <= 1000 Then

            ScrollBar1.Min = TempNum

        Else

            TextBox1.Text = ScrollBar1.Min

        End If

    Else

        TextBox1.Text = ScrollBar1.Min

    End If

End Sub

Private Sub TextBox2_Change()

    If IsNumeric(TextBox2.Text) Then

        TempNum = CInt(TextBox2.Text)

        If TempNum >= -1000 And TempNum <= 1000 Then

            ScrollBar1.Max = TempNum

        Else

            TextBox2.Text = ScrollBar1.Max

        End If

    Else

        TextBox2.Text = ScrollBar1.Max

    End If

End Sub

Private Sub ScrollBar1_Change()

Label3.Caption = ScrollBar1.Value

End Sub


LargeChange 和 SmallChange 属性示例

下面的示例，演示当与独立 ScrollBar 一起使用时的 LargeChange 和 SmallChange 属性。用户可以把 LargeChange 和 SmallChange 值设置为从 0 到 100 范围内的任何整数。这个例子还使用 MaxLength 属性来限定为 LargeChange 和 SmallChange 值输入的字符数。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Label1 的 Label 和名为 TextBox1 的 TextBox。

• 	名为 Label2 的 Label 和名为 TextBox2 的 TextBox。

• 	名为 ScrollBar1 的 ScrollBar。

• 	名为 Label3 的 Label。

Dim TempNum As Integer

Private Sub ScrollBar1_Change()

    Label3.Caption = ScrollBar1.Value

End Sub

Private Sub TextBox1_Change()

    If IsNumeric(TextBox1.Text) Then

        TempNum = CInt(TextBox1.Text)

        If TempNum >= 0 And TempNum <= 100 Then

            ScrollBar1.SmallChange = TempNum

        Else

            TextBox1.Text = ScrollBar1.SmallChange

        End If

    Else

        TextBox1.Text = ScrollBar1.SmallChange

    End If

End Sub

Private Sub TextBox2_Change()

    If IsNumeric(TextBox2.Text) Then

        TempNum = CInt(TextBox2.Text)

        If TempNum >= 0 And TempNum <= 100 Then

            ScrollBar1.LargeChange = TempNum

        Else

            TextBox2.Text = ScrollBar1.LargeChange

        End If

    Else

        TextBox2.Text = ScrollBar1.LargeChange

    End If

End Sub

Private Sub UserForm_Initialize()

    ScrollBar1.Min = -1000

    ScrollBar1.Max = 1000

    Label1.Caption = "SmallChange 0 to 100"

    ScrollBar1.SmallChange = 1

    TextBox1.Text = ScrollBar1.SmallChange

    TextBox1.MaxLength = 3

    Label2.Caption = "LargeChange 0 to 100"

    ScrollBar1.LargeChange = 100

    TextBox2.Text = ScrollBar1.LargeChange

    TextBox2.MaxLength = 3

    ScrollBar1.Value = 0

    Label3.Caption = ScrollBar1.Value

End Sub


ScrollBars 和 KeepScrollBarsVisible 属性示例

下面的示例，使用 ScrollBars 和 KeepScrollBarsVisible 属性把滚动条加入 MultiPage 的一页和 Frame 中。随后用户选中一个选项按钮，为 KeepScrollBarsVisible 指定一个值。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 MultiPage1 的 MultiPage。

• 	名为 Frame1 的 Frame。

• 	名为从 OptionButton1 到 OptionButton4 的四个 OptionButton 控件。

Private Sub UserForm_Initialize()

    MultiPage1.Pages(0).ScrollBars = fmScrollBarsBoth

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsNone

    Frame1.ScrollBars = fmScrollBarsBoth

    Frame1.KeepScrollBarsVisible = fmScrollBarsNone

    OptionButton1.Caption = "No scroll bars"

    OptionButton1.Value = True

    OptionButton2.Caption = "Horizontal scroll bars"

    OptionButton3.Caption = "Vertical scroll bars"

    OptionButton4.Caption = "Both scroll bars"

End Sub

Private Sub OptionButton1_Click()

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsNone

    Frame1.KeepScrollBarsVisible = fmScrollBarsNone

End Sub

Private Sub OptionButton2_Click()

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsHorizontal

    Frame1.KeepScrollBarsVisible = fmScrollBarsHorizontal

End Sub

Private Sub OptionButton3_Click()

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsVertical

    Frame1.KeepScrollBarsVisible = fmScrollBarsVertical

End Sub

Private Sub OptionButton4_Click()

    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsBoth

    Frame1.KeepScrollBarsVisible = fmScrollBarsBoth

End Sub


ScrollHeight, ScrollLeft, ScrollTop 和 ScrollWidth 属性示例

下面的示例，把 MultiPage 的一页用作滚动区。用户使用 MultiPage 的 Page2 上的滚动条，获取对最初未显示的页的部分的访问。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 MultiPage1 的 MultiPage，并且 MultiPage 的每页包含一个或多个控件。

注意   MultiPage 的每页是唯一的。Page1 没有滚动条。Page2 有水平和垂直的滚动条。

Private Sub UserForm_Initialize()

    MultiPage1.Pages(1).ScrollBars = fmScrollBarsBoth

    MultiPage1.Pages(1).KeepScrollBarsVisible = fmScrollBarsNone

    MultiPage1.Pages(1).ScrollHeight = 2 * MultiPage1.Height

    MultiPage1.Pages(1).ScrollWidth = 2 * MultiPage1.Width

    '在设置 ScrollLeft 和 ScrollTop 之前设置 ScrollHeight 和 SrollWidth

    MultiPage1.Pages(1).ScrollLeft = MultiPage1.Width / 2

    MultiPage1.Pages(1).ScrollTop = MultiPage1.Height / 2

End Sub


InsideHeight 和 InsideWidth 属性示例

下面的示例，使用 InsideHeight 和 InsideWidth 属性来调整 CommandButton 的大小。用户单击 CommandButton 来调整其大小。

注意   InsideHeight 和 InsideWidth 为只读属性。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 CommandButton1 的 CommandButton。

Dim Resize As Single

Private Sub UserForm_Initialize()

    Resize = 0.75

    CommandButton1.Caption = "Resize Button"

End Sub

Private Sub CommandButton1_Click()

    CommandButton1.Move 10, 10, UserForm1.InsideWidth * Resize, UserForm1.InsideHeight * Resize

    CommandButton1.Caption = "Button resized using InsideHeight and InsideWidth!"

End Sub


ListRows 属性示例

下面的示例，用 SpinButton 来控制 ComboBox 的下拉列表中的行的数目。用户改变 SpinButton 的值，然后单击 ComboBox 的下拉箭头来显示列表。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ComboBox1 的 ComboBox。

• 	名为 SpinButton1 的 SpinButton。

• 	名为 Label1 的 Label。

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 20

        ComboBox1.AddItem "Choice " & (ComboBox1.ListCount + 1)

    Next i

    SpinButton1.Min = 0

    SpinButton1.Max = 12

    SpinButton1.Value = ComboBox1.ListRows

    Label1.Caption = "ListRows = " & SpinButton1.Value

End Sub

Private Sub SpinButton1_Change()

    ComboBox1.ListRows = SpinButton1.Value

    Label1.Caption = "ListRows = " & SpinButton1.Value

End Sub


ListWidth 属性示例

下面的示例，用 SpinButton 来控制 ComboBox 的下拉列表的宽度。用户改变 SpinButton 的值，然后在单击 ComboBox 的下拉箭头来显示列表。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ComboBox1 的 ComboBox。

• 	名为 SpinButton1 的 SpinButton。

• 	名为 Label1 的 Label。

Private Sub SpinButton1_Change()

    ComboBox1.ListWidth = SpinButton1.Value

    Label1.Caption = "ListWidth = " & SpinButton1.Value

End Sub

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 20

        ComboBox1.AddItem "Choice " & (ComboBox1.ListCount + 1)

    Next i

    SpinButton1.Min = 0

    SpinButton1.Max = 130

    SpinButton1.Value = Val(ComboBox1.ListWidth)

    SpinButton1.SmallChange = 5

    Label1.Caption = "ListWidth = " & SpinButton1.Value

End Sub


ListStyle 和 MultiSelect 属性示例

下面的示例，使用 ListStyle 和 MultiSelect 属性来控制 ListBox 的外观。用户用 ToggleButton 为 ListStyle 选择一个值，并为一个 MultiSelect 值选择一个 OptionButton。ListBox 的外观随 ListBox 内的选定动作做相应的改变。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ListBox1 的 ListBox,

• 	名为 Label1 的 Label。

• 	名为从 OptionButton1 到 OptionButton3 的三个 OptionButton 控件。

• 	名为 ToggleButton1 的 ToggleButton。

Private Sub UserForm_Initialize()

    Dim i As Integer

    For i = 1 To 8

        ListBox1.AddItem "Choice" & (ListBox1.ListCount + 1)

    Next i

    Label1.Caption = "MultiSelect Choices"

    Label1.AutoSize = True

    ListBox1.MultiSelect = fmMultiSelectSingle

    OptionButton1.Caption = "Single entry"

    OptionButton1.Value = True

    OptionButton2.Caption = "Multiple entries"

    OptionButton3.Caption = "Extended entries"

    ToggleButton1.Caption = "ListStyle - Plain"

    ToggleButton1.Value = True

    ToggleButton1.Width = 90

    ToggleButton1.Height = 30

End Sub

Private Sub OptionButton1_Click()

    ListBox1.MultiSelect = fmMultiSelectSingle

End Sub

Private Sub OptionButton2_Click()

    ListBox1.MultiSelect = fmMultiSelectMulti

End Sub

Private Sub OptionButton3_Click()

    ListBox1.MultiSelect = fmMultiSelectExtended

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        ToggleButton1.Caption = "Plain ListStyle"

        ListBox1.ListStyle = fmListStylePlain

    Else

        ToggleButton1.Caption = "OptionButton or CheckBox"

        ListBox1.ListStyle = fmListStyleOption

    End If

End Sub


MouseIcon 和 MousePointer 属性示例

下面的示例，演示如何确定一个适合特定的控件或场所的鼠标指针。可以用 MousePointer 属性从几个有效的鼠标指针中选择一个；或者用 MousePointer 和 MouseIcon 属性分配一个自定义图标。

这个例子按以下方法工作：

• 	从 ListBox 中选择一鼠标指针来改变与第一个 CommandButton 相关的鼠标指针。

• 	单击第一个 CommandButton 使其鼠标指针与第二个 CommandButton 相关。

• 	单击第二个 CommandButton 为其鼠标指针加载一自定义图标。

要使用这个例子，需把这个示范的代码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 CommandButton1 和 CommandButton2 的两个 CommandButton 控件。

• 	名为 LIstBox1 的 ListBox。

注意   这个例子使用了用 LoadPicture 函数加载的两个图标文件（由 .ico 文件扩展名标识）。编辑每一个 LoadPicture 函数调用来指定常驻系统的图标文件。

Private Sub ListBox1_Click()

    If IsNull(ListBox1.Value) = False Then

        CommandButton1.MousePointer = ListBox1.Value

        If CommandButton1.MousePointer = fmMousePointerCustom Then

            CommandButton1.MouseIcon = LoadPicture("c:\msvc20\cdk32\samples\circ1\bix.ico")

        End If

    End If

End Sub

Private Sub CommandButton1_Click()

    CommandButton2.MousePointer = CommandButton1.MousePointer

    If CommandButton2.MousePointer = fmMousePointerCustom Then

        CommandButton2.MouseIcon = CommandButton1.MouseIcon

    End If

End Sub

Private Sub CommandButton2_Click()

    CommandButton2.MousePointer = fmMousePointerCustom

    CommandButton2.MouseIcon = LoadPicture("c:\msvc20\cdk32\samples\push\push.ico")

End Sub

Private Sub UserForm_Initialize()

    '装入具有 MousePoiter 选择的 ListBox

    ListBox1.ColumnCount = 2

    ListBox1.AddItem "fmMousePointerDefault"

    ListBox1.List(0, 1) = fmMousePointerDefault

    ListBox1.AddItem "fmMousePointerArrow"

    ListBox1.List(1, 1) = fmMousePointerArrow

    ListBox1.AddItem "fmMousePointerCross"

    ListBox1.List(2, 1) = fmMousePointerCross

    ListBox1.AddItem "fmMousePointerIBeam"

    ListBox1.List(3, 1) = fmMousePointerIBeam

    ListBox1.AddItem "fmMousePointerSizeNESW"

    ListBox1.List(4, 1) = fmMousePointerSizeNESW

    ListBox1.AddItem "fmMousePointerSizeNS"

    ListBox1.List(5, 1) = fmMousePointerSizeNS

    ListBox1.AddItem "fmMousePointerSizeNWSE"

    ListBox1.List(6, 1) = fmMousePointerSizeNWSE

    ListBox1.AddItem "fmMousePointerSizeWE"

    ListBox1.List(7, 1) = fmMousePointerSizeWE

    ListBox1.AddItem "fmMousePointerUpArrow"

    ListBox1.List(8, 1) = fmMousePointerUpArrow

    ListBox1.AddItem "fmMousePointerHourglass"

    ListBox1.List(9, 1) = fmMousePointerHourGlass

    ListBox1.AddItem "fmMousePointerNoDrop"

    ListBox1.List(10, 1) = fmMousePointerNoDrop

    ListBox1.AddItem "fmMousePointerAppStarting"

    ListBox1.List(11, 1) = fmMousePointerAppStarting

    ListBox1.AddItem "fmMousePointerHelp"

    ListBox1.List(12, 1) = fmMousePointerHelp

    ListBox1.AddItem "fmMousePointerSizeAll"

    ListBox1.List(13, 1) = fmMousePointerSizeAll

    ListBox1.AddItem "fmMousePointerCustom"

    ListBox1.List(14, 1) = fmMousePointerCustom

    ListBox1.BoundColumn = 2

    ListBox1.Value = fmMousePointerDefault

    MsgBox "ListBox1.Value =" & ListBox1.Value & "."

    CommandButton1.MousePointer = ListBox1.Value

End Sub


EnterKeyBehavior 属性示例

下面的示例，使用 EnterKeyBehavior 属性来控制 TextBox 中的 ENTER 操作效果。在这个例子中，用户可以指定单行的或者多行的 TextBox。

要使用这个例子，需把这个示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 ToggleButton1 和 ToggleButton2 的两个 ToggleButton 控件。

Private Sub UserForm_Initialize()

    TextBox1.EnterKeyBehavior = True

    ToggleButton1.Caption = "EnterKeyBehavior is True"

    ToggleButton1.Width = 70

    ToggleButton1.Value = True

    TextBox1.MultiLine = True

    ToggleButton2.Caption = "MultiLine is True"

    ToggleButton2.Width = 70

    ToggleButton2.Value = True

    TextBox1.Height = 100

    TextBox1.WordWrap = True

    TextBox1.Text = "Type your text here. If EnterKeyBehavior is True,"& _
    " press Enter to start a new line. Otherwise, press SHIFT+ENTER."

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        TextBox1.EnterKeyBehavior = True

        ToggleButton1.Caption = "EnterKeyBehavior is True"

    Else

        TextBox1.EnterKeyBehavior = False

        ToggleButton1.Caption = "EnterKeyBehavior is False"

    End If

End Sub

Private Sub ToggleButton2_Click()

    If ToggleButton2.Value = True Then

        TextBox1.MultiLine = True

        ToggleButton2.Caption = "MultiLine TextBox"

    Else

        TextBox1.MultiLine = False

        ToggleButton2.Caption = "Single-line TextBox"

    End If

End Sub


Index 属性示例

下面的示例，使用 Index 属性来改变 MultiPage 和 TabStrip 中页和标签的顺序。用户选择 CommandButton1 来把第三页和标签移到 MultiPage 和 TabStrip 的前面。用户选择 CommandButton2 来把选中的页和标签移到 MultiPage 和 TabStrip 的后面。

要使用这个例子，需把这个示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 CommandButton1 和 CommandButton2 的两个 CommandButton 控件。

• 	名为 Multipage1 的 MultiPage。

• 	名为 TabStrip1 的 TabStrip。

Dim MyPageOrTab As Object

Private Sub CommandButton1_Click()

'把第三页和标签移到控件的前面

    MultiPage1.page3.Index = 0

    TabStrip1.Tab3.Index = 0

End Sub

Private Sub CommandButton2_Click()

'把选定的页和标签移到控件的后面

    Set MyPageOrObject = MultiPage1.SelectedItem

    MsgBox "MultiPage1.SelectedItem = " & MultiPage1.SelectedItem.Name

    MyPageOrObject.Index = 4

    Set MyPageOrObject = TabStrip1.SelectedItem

    MsgBox "TabStrip1.SelectedItem = " & TabStrip1.SelectedItem.Caption

    MyPageOrObject.Index = 4

End Sub

Private Sub UserForm_Initialize()

    MultiPage1.Width = 200

    MultiPage1.Pages.Add

    MultiPage1.Pages.Add

    MultiPage1.Pages.Add

    TabStrip1.Width = 200

    TabStrip1.Tabs.Add

    TabStrip1.Tabs.Add

    TabStrip1.Tabs.Add

    CommandButton1.Caption = "Move third page/tab to front"

    CommandButton1.Width = 120

    CommandButton2.Caption = "Move selected item to back"

    CommandButton2.Width = 120

 End Sub


Enabled 和 Locked 属性示例

下面的示例，演示了 Enabled 和 Locked 属性，及它们如何互相补充。这个例子展现每一个属性时与 CheckBox 无关，所以可以观察单个和组合设置。这个例子还包括第二个 TextBox，所以可以在 TextBox 控件之间复制和粘贴信息，并检验由这些属性设置支持的动作。

注意   可以用 CTRL + C 把选中内容复制到剪贴板，用 CTRL + V 进行粘贴。

要使用这个例子，需把这个示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 CheckBox1 和 CheckBox2 的两个 CheckBox 控件。

• 	名为 TextBox2 的第二个 TextBox。

Private Sub CheckBox1_Change()

    TextBox2.Text = "TextBox2"

    TextBox1.Enabled = CheckBox1.Value

End Sub

Private Sub CheckBox2_Change()

    TextBox2.Text = "TextBox2"

    TextBox1.Locked = CheckBox2.Value

End Sub

Private Sub UserForm_Initialize()

    TextBox1.Text = "TextBox1"

    TextBox1.Enabled = True

    TextBox1.Locked = False

    CheckBox1.Caption = "Enabled"

    CheckBox1.Value = True

    CheckBox2.Caption = "Locked"

    CheckBox2.Value = False

    TextBox2.Text = "TextBox2"

End Sub


Delay 属性示例

下面的示例，演示当用户按下鼠标按钮来更改 SpinButton 或 ScrollBar 的值时，连续的 Change、SpinUp 和 SpinDown 事件之间的时间间隔。

在这个例子中，用户选择延时设置，然后单击并按住 SpinButton 的任一边。当 SpinUp 和 SpinDown 事件初始化时，它们被记录在 ListBox 中。

要使用这个例子，需把这个示例编码复制到某窗体的 Declaration 部分。该窗体要包含：

• 	名为 SpinButton1 的 SpinButton。

• 	名为 OptionButton1 和 OptionButton2 的两个 OptionButton 控件。

• 	名为 ListBox1 的 ListBox。

Dim EventCount As Long

Private Sub ResetControl()

    ListBox1.Clear

    EventCount = 0

    SpinButton1.Value = 5000

End Sub

Private Sub UserForm_Initialize()

    SpinButton1.Min = 0

    SpinButton1.Max = 10000

    ResetControl

    SpinButton1.Delay = 50

    OptionButton1.Caption = "50 millisecond delay"

    OptionButton2.Caption = "250 millisecond delay"

    OptionButton1.Value = True

End Sub

Private Sub OptionButton1_Click()

    SpinButton1.Delay = 50

    ResetControl

End Sub

Private Sub OptionButton2_Click()

    SpinButton1.Delay = 250

    ResetControl

End Sub

Private Sub SpinButton1_SpinDown()

    EventCount = EventCount + 1

    ListBox1.AddItem EventCount

End Sub

Private Sub SpinButton1_SpinUp()

    EventCount = EventCount + 1

    ListBox1.AddItem EventCount

End Sub


DropButtonStyle 和 ShowDropButtonWhen 属性示例

下面的示例，演示在 ComboBox 或 TextBox 中，可以为下拉箭头指定的不同符号。在这个例子中，用户从 ComboBox 中选择一个下拉箭头的类型。这个例子还使用了 Locked 属性。要使用这个例子，需把这个示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ComboBox1 的 ComboBox。

• 	名为 Label1 的 Label。

• 	置于 Label1 之下的名为 TextBox1 的 TextBox。

Private Sub ComboBox1_Click()

    ComboBox1.DropButtonStyle = ComboBox1.Value

    TextBox1.DropButtonStyle = ComboBox1.Value

End Sub

Private Sub UserForm_Initialize()

    ComboBox1.ColumnCount = 2

    ComboBox1.BoundColumn = 2

    ComboBox1.TextColumn = 1

    ComboBox1.AddItem "Blank Button"

    ComboBox1.List(0, 1) = 0

    ComboBox1.AddItem "Down Arrow"

    ComboBox1.List(1, 1) = 1

    ComboBox1.AddItem "Ellipsis"

    ComboBox1.List(2, 1) = 2

    ComboBox1.AddItem "Underscore"

    ComboBox1.List(3, 1) = 3

    ComboBox1.Value = 0

    TextBox1.Text = "TextBox1"

    TextBox1.ShowDropButtonWhen = fmShowDropButtonWhenAlways

    TextBox1.Locked = True

    Label1.Caption = "TheDropButton also applies to a TextBox."

    Label1.AutoSize = True

    Label1.WordWrap = False

End Sub


LineCount 和 TextLength 属性示例

下面的示例，用 LineCount 和 TextLength 属性及 SetFocus 方法统计 TextBox 中文本的字符和行数。在这个例子中，用户可以键入字符到 TextBox，并检索 LineCount 和 TextLength 属性的当前值。

要使用这个例子，需把这个示例编码复制到某窗体的 Declaration 部分。该窗体要包含以下控件：

• 	名为 TextBox1 的 TextBox。

• 	名为 CommandButton1 的 CommandButton。

• 	名为 Label1 和 Label2 的两个 Label 控件。

'按 SHIFT + ENTER，在文本框中另起一行。

Private Sub CommandButton1_Click()

    '要得到行数，必须先将焦点移到 TextBox1

    TextBox1.SetFocus

    Label1.Caption = "LineCount = " & TextBox1.LineCount

    Label2.Caption = "TextLength = " & TextBox1.TextLength

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.WordWrap = True

    CommandButton1.AutoSize = True

    CommandButton1.Caption = "Get Counts"

    Label1.Caption = "LineCount = "

    Label2.Caption = "TextLength = "

    TextBox1.MultiLine = True

    TextBox1.WordWrap = True

    TextBox1.Text = "Enter your text here."

End Sub


Count 属性示例

下面的示例，显示窗体的 Controls 集合的 Count 属性，而且 Count 属性标识每一个 MultiPage 和 TabStrip 的页和标签的数目。

要使用这个例子，需把这个示例编码复制到某窗体的 Declaration 部分。只要遵循下列约定，该窗体可以包含任何数目的控件：

• 	MultiPage 控件的名称必须以“MultiPage”开头。

• 	TabStrip 控件的名称必须以“TabStrip”开头。

注意   可以在 MultiPage 中添加页或在 TabStrip 中添加标签。双击控件，然后在控件的标签区内单击右键，并从快捷菜单里选择“新页”。

Private Sub UserForm_Initialize()

    Dim MyControl As Control

    MsgBox "UserForm1.Controls.Count = " & Controls.Count

    For Each MyControl In Controls

        If (MyControl.Name Like "MultiPage*") Then

            MsgBox MyControl.Name & ".Pages.Count = " & MyControl.Pages.Count

        ElseIf (MyControl.Name Like "TabStrip*") Then

            MsgBox MyControl.Name & ".Tabs.Count = " & MyControl.Tabs.Count

        End If

    Next

End Sub


Alignment 属性示例

下面的示例，演示几个 OptionButton 控件一起使用时的 Alignment 属性。在这个例子中，用户可以通过单击 ToggleButton 来更改对齐格式。

要使用这个例子，需把这个示例编码复制到某窗体的 Declarations 部分。该窗体要包括下列控件：

• 	名为 OptionButton1 和 OptionButton2 的两个 OptionButton 控件。

• 	名为 ToggleButton1 的 ToggleButton。

Private Sub UserForm_Initialize()

    OptionButton1.Alignment = fmAlignmentLeft

    OptionButton2.Alignment = fmAlignmentLeft

    OptionButton1.Caption = "Alignment with AutoSize"

    OptionButton2.Caption = "Choice 2"

    OptionButton1.AutoSize = True

    OptionButton2.AutoSize = True

    ToggleButton1.Caption = "Left Align"

    ToggleButton1.WordWrap = True

    ToggleButton1.Value = True

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        ToggleButton1.Caption = "Left Align"

        OptionButton1.Alignment = fmAlignmentLeft

        OptionButton2.Alignment = fmAlignmentLeft

    Else

        ToggleButton1.Caption = "Right Align"

        OptionButton1.Alignment = fmAlignmentRight

        OptionButton2.Alignment = fmAlignmentRight

    End If

End Sub


ActiveControl 属性示例

下面的示例，在一个子例程中使用 ActiveControl 属性，该子例程跟踪用户访问的控件。每一控件的 Enter 事件，通过调用 TraceFocus 子例程来标识有焦点的控件。

要使用这个例子，需把此示例编码复制到某窗体的 Declarations 部分。该窗体要包含以下控件：

• 	名为 ScrollBar1 的 ScrollBar。

• 	名为 ListBox1 的 ListBox。

• 	名为 OptionButton1 和 Optionbutton2 的两个 OptionButton 控件。

• 	名为 Frame1 的 Frame。

Dim MyControl As Control

Private Sub TraceFocus()

    ListBox1.AddItem ActiveControl.Name

    ListBox1.List(ListBox1.ListCount - 1, 1) = ActiveControl.TabIndex

End Sub

Private Sub UserForm_Initialize()

    ListBox1.ColumnCount = 2

    ListBox1.AddItem "Controls Visited"

    ListBox1.List(0, 1) = "Control Index"

End Sub

Private Sub Frame1_Enter()

    TraceFocus

End Sub

Private Sub ListBox1_Enter()

    TraceFocus

End Sub

Private Sub OptionButton1_Enter()

    TraceFocus

End Sub

Private Sub OptionButton2_Enter()

    TraceFocus

End Sub

Private Sub ScrollBar1_Enter()

    TraceFocus

End Sub


DropDown 方法示例

下面的示例，用 DropDown 方法来显示 ComboBox 中的列表。用户可以通过单击 CommandButton 来显示 ComboBox 列表。

要使用这个例子，需把这个示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ComboBox1 的 ComboBox。

• 	名为 CommandButton1 的 CommandButton。

Private Sub CommandButton1_Click()

    ComboBox1.DropDown

End Sub

Private Sub UserForm_Initialize()

    ComboBox1.AddItem "Turkey"

    ComboBox1.AddItem "Chicken"

    ComboBox1.AddItem "Duck"

    ComboBox1.AddItem "Goose"

    ComboBox1.AddItem "Grouse"

End Sub


从文本框中剪切和粘贴的示例

下面的示例，用 Cut 和 Paste 方法从一个 TextBox 中剪切文本并粘贴到另一个 TextBox 中。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 和 TextBox2 的两个 TextBox 控件。

• 	名为 CommandButton1 的 CommandButton。

Private Sub UserForm_Initialize()

    TextBox1.Text = "From TextBox1!"

    TextBox2.Text = "Hello "

    CommandButton1.Caption = "Cut and Paste"

    CommandButton1.AutoSize = True

End Sub

Private Sub CommandButton1_Click()

    TextBox2.SelStart = 0

    TextBox2.SelLength = TextBox2.TextLength

    TextBox2.Cut

    TextBox1.SetFocus

    TextBox1.SelStart = 0

    TextBox1.Paste

    TextBox2.SelStart = 0

End Sub


从页中剪切和粘贴的示例

下面的示例，用 Add、Cut 和 Paste 方法从 MultiPage 的 Page 中剪切和粘贴控件。剪切和粘贴操作中涉及的控件，被动态地加进窗体。

这个例子假设用户先添加、然后剪切、最后粘贴新的控件。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为从 CommandButton1 到 CommandButton3 的三个 CommandButton 控件。

• 	名为 Multipage1 的 MultiPage。

Dim MyTextBox As Control

Private Sub CommandButton1_Click()

    Set MyTextBox = MultiPage1.Pages(MultiPage1.Value).Controls.Add("Forms.TextBox.1", "MyTextBox", Visible)

    CommandButton2.Enabled = True

    CommandButton1.Enabled = False

End Sub

Private Sub CommandButton2_Click()

    MultiPage1.Pages(MultiPage1.Value).Controls.Cut

    CommandButton3.Enabled = True

    CommandButton2.Enabled = False

End Sub

Private Sub CommandButton3_Click()

    Dim MyPage As Object

    Set MyPage = MultiPage1.Pages.Item(MultiPage1.Value)

    MyPage.Paste

    CommandButton3.Enabled = False

End Sub

Private Sub UserForm_Initialize()

    CommandButton1.Caption = "Add"

    CommandButton2.Caption = "Cut"

    CommandButton3.Caption = "Paste"

    CommandButton1.Enabled = True

    CommandButton2.Enabled = False

    CommandButton3.Enabled = False

End Sub


Name 属性示例

下面的示例，显示了窗体上每一控件的 Name 属性。这个例子用 Controls 集合在直接置于 Userform 上的全部控件中循环。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含一个名为 CommandButton1 的 CommandButton 和几个其它控件。

Private Sub CommandButton1_Click()

    Dim MyControl As Control

    For Each MyControl In Controls

        MsgBox "MyControl.Name = " & MyControl.Name

    Next

End Sub


访问标签的示例

下面的示例，用以下几种方法存取 TabStrip 的单独标签：

• 	利用具有数字索引的 Tabs 集合。

• 	利用具有字符串索引的 Tabs 集合。

• 	利用具有 Item 方法的 Tabs 集合。

• 	使用该单独 Tab 的名称。

• 	使用 SelectedItem 属性。

要使用这例子，需把这个示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 TabStrip1 的 TabStrip。

Private Sub UserForm_Initialize()

    Dim TabName As String

    For i = 0 To TabStrip1.Count - 1

        '使用索引（数值的或字符串的）

        MsgBox "TabStrip1.Tabs(i).Caption = " & TabStrip1.Tabs(i).Caption

        MsgBox "TabStrip1.Tabs.Item(i).Caption = " & TabStrip1.Tabs.Item(i).Caption

        TabName = TabStrip1.Tabs(i).Name

        MsgBox "TabName = " & TabName

        MsgBox "TabStrip1.Tabs(TabName).Caption = " & TabStrip1.Tabs(TabName).Caption

        MsgBox "TabStrip1.Tabs.Item(TabName).Caption = " & TabStrip1.Tabs.Item(TabName).Caption

        '不引用 Tabs 集合，使用 Tab 对象

        If i = 0 Then

            MsgBox "TabStrip1.Tab1. Caption = " & TabStrip1.Tab1.Caption

        ElseIf i = 1 Then

            MsgBox "TabStrip1.Tab2. Caption = " & TabStrip1.Tab2.Caption

        EndIf

        '使用 SelectedItem 属性

        TabStrip1.Value = i

        MsgBox " TabStrip1.SelectedItem.Caption = " & TabStrip1.SelectedItem.Caption

    Next i

End Sub


Zoom 属性示例

下面的示例，用 Zoom 属性将显示在窗体、页或者框架上的信息缩小或放大。这个例子包括一个 Frame、一个 Frame 中的 TextBox 和一个 ScrollBar。Frame 的放大倍数通过 Zoom 改变。用户可以用 ScrollBar 来设置 Zoom。TextBox 用来演示缩放效果。

这个例子还用 Max 和 Min 属性，来设置可接受的 ScrollBar 范围的值。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包括：

• 	名为 Label1 的 Label。

• 	名为 ScrollBar1 的 ScrollBar。

• 	名为 Label2 的第二个 Label。

• 	名为 Frame1 的 Frame。

• 	置于 Frame1 中的名为 TextBox1 的 TextBox。

Private Sub UserForm_Initialize()

    ScrollBar1.Max = 400

    ScrollBar1.Min = 10

    ScrollBar1.Value = 100

    Label1.Caption = "10  -----Percent of Original Size---- 400"

    Label2.Caption = ScrollBar1.Value

    Frame1.TextBox1.Text = "Enter your text here."

    Frame1.TextBox1.MultiLine = True

    Frame1.TextBox1.WordWrap = True

    Frame1.Zoom = ScrollBar1.Value

End Sub

Private Sub ScrollBar1_Change()

    Frame1.Zoom = ScrollBar1.Value

    Label2.Caption = ScrollBar1.Value

End Sub


TextColumn 属性示例

下面的示例，用 TextColumn 属性来标识 ListBox 中数据的列，该列为其 Text 属性提供数据。这个例子把 ListBox 的第三列设置为文本列。当从 ListBox 中选定一条目时，来自 TextColumn 的值将被显示在 Label 中。

这个例子还演示如何用 AddItem 方法和 List 属性来加载一多列 ListBox。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ListBox1 的 ListBox。

• 	名为 TextBox1 的 TextBox。

Private Sub UserForm_Initialize()

ListBox1.ColumnCount = 3

ListBox1.AddItem "Row 1, Col 1"

ListBox1.List(0, 1) = "Row 1, Col 2"

ListBox1.List(0, 2) = "Row 1, Col 3"

ListBox1.AddItem "Row 2, Col 1"

ListBox1.List(1, 1) = "Row 2, Col 2"

ListBox1.List(1, 2) = "Row 2, Col 3"

ListBox1.AddItem "Row 3, Col 1"

ListBox1.List(2, 1) = "Row 3, Col 2"

ListBox1.List(2, 2) = "Row 3, Col 3"

ListBox1.TextColumn = 3

End Sub

Private Sub ListBox1_Change()

TextBox1.Text = ListBox1.Text

End Sub


PictureSizeMode 属性示例

下面的示例，使用 PictureSizeMode 属性来演示三种图片显示选项：原样显示图片、改变图片尺寸但保持其原有比例、以及让图片充满整个空间。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Frame1 的 Frame。

• 	名为 SpinButton1 的 SpinButton。

• 	名为 TextBox1 的 TextBox。

• 	名为 OptionButton1 到 OptionButton3 的三个 OptionButton 控件。

注意   这个例子是 PictureAlignment 属性例子的增强版，两个属性相互补充。所增强的是三个 OptionButton 事件的子例程，它们控制图象是否被修剪、放大或伸展。

Dim Alignments(5) As String

Private Sub UserForm_Initialize()

    Alignments(0) = "0 - Top Left"

    Alignments(1) = "1 - Top Right"

    Alignments(2) = "2 - Center"

    Alignments(3) = "3 - Bottom Left"

    Alignments(4) = "4 - Bottom Right"

    '指定存在于系统上的位图

    Frame1.Picture = LoadPicture("c:\winnt2\ball.bmp")

    SpinButton1.Min = 0

    SpinButton1.Max = 4

    SpinButton1.Value = 0

    TextBox1.Text = Alignments(0)

    Frame1.PictureAlignment = SpinButton1.Value

    OptionButton1.Caption = "Crop"

    OptionButton1.Value = True

    OptionButton2.Caption = "Stretch"

    OptionButton3.Caption = "Zoom"

End Sub

Private Sub OptionButton1_Click()

    If OptionButton1.Value = True Then

        Frame1.PictureSizeMode = fmPictureSizeModeClip

    End If

End Sub

Private Sub OptionButton2_Click()

    If OptionButton2.Value = True Then

        Frame1.PictureSizeMode = fmPictureSizeModeStretch

    End If

End Sub

Private Sub OptionButton3_Click()

    If OptionButton3.Value = True Then

        Frame1.PictureSizeMode = fmPictureSizeModeZoom

    End If

End Sub

Private Sub SpinButton1_Change()

    TextBox1.Text = Alignments(SpinButton1.Value)

    Frame1.PictureAlignment = SpinButton1.Value

End Sub

Private Sub TextBox1_Change()

    Select Case TextBox1.Text

    Case "0"

        TextBox1.Text = Alignments(0)

        Frame1.PictureAlignment = 0

    Case "1"

        TextBox1.Text = Alignments(1)

        Frame1.PictureAlignment = 1

    Case "2"

        TextBox1.Text = Alignments(2)

        Frame1.PictureAlignment = 2

    Case "3"

        TextBox1.Text = Alignments(3)

        Frame1.PictureAlignment = 3

    Case "4"

        TextBox1.Text = Alignments(4)

        Frame1.PictureAlignment = 4

    Case Else

        TextBox1.Text = Alignments(SpinButton1.Value)

        Frame1.PictureAlignment = SpinButton1.Value

    End Select

End Sub


PictureAlignment 属性示例

下面的示例，用 PictureAlignment 属性来建立一背景图片。该例子还标识 PictureAlignment 所提供的对齐选项。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Frame1 的 Frame。

• 	名为 SpinButton1 的 SpinButton。

• 	名为 TextBox1 的 TextBox。

Dim Alignments(5) As String

Private Sub UserForm_Initialize()

    Alignments(0) = "0 - Top Left"

    Alignments(1) = "1 - Top Right"

    Alignments(2) = "2 - Center"

    Alignments(3) = "3 - Bottom Left"

    Alignments(4) = "4 - Bottom Right"

    '指定存在于系统上的位图

    Frame1.Picture = LoadPicture("c:\winnt2\ball.bmp")

    SpinButton1.Min = 0

    SpinButton1.Max = 4

    SpinButton1.Value = 0

    TextBox1.Text = Alignments(0)

    Frame1.PictureAlignment = SpinButton1.Value

End Sub

Private Sub SpinButton1_Change()

    TextBox1.Text = Alignments(SpinButton1.Value)

    Frame1.PictureAlignment = SpinButton1.Value

End Sub

Private Sub TextBox1_Change()

    Select Case TextBox1.Text

    Case "0"

        TextBox1.Text = Alignments(0)

        Frame1.PictureAlignment = 0

    Case "1"

        TextBox1.Text = Alignments(1)

        Frame1.PictureAlignment = 1

    Case "2"

        TextBox1.Text = Alignments(2)

        Frame1.PictureAlignment = 2

    Case "3"

        TextBox1.Text = Alignments(3)

        Frame1.PictureAlignment = 3

    Case "4"

        TextBox1.Text = Alignments(4)

        Frame1.PictureAlignment = 4

    Case Else

        TextBox1.Text = Alignments(SpinButton1.Value)

        Frame1.PictureAlignment = SpinButton1.Value

    End Select

End Sub


GroupName 属性示例

下面的示例，用 GroupName 属性在同一窗体上生成两组 OptionButton 控件。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 OptionButton1 到 OptionButton5 的五个 OptionButton 控件。

Private Sub UserForm_Initialize()

    OptionButton1.GroupName = "Widgets"

    OptionButton2.GroupName = "Widgets"

    OptionButton4.GroupName = "Widgets"

    OptionButton3.GroupName = "Gadgets-Group2"

    OptionButton5.GroupName = "Gadgets-Group2"

End Sub


GetFromClipboard 方法示例

下面的示例，演示从 TextBox 到剪贴板，从剪贴板到 DataObject 以及从 DataObject 到另一个 TextBox 的数据移动。GetFromClipboard 方法把数据从剪贴板传输到 DataObject。同时，该例子还使用了 Copy 和 GetText 方法。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 和 TextBox2 的两个 TextBox 控件。

• 	名为 CommandButton1 的 CommandButton。

Dim MyData as DataObject

Private Sub CommandButton1_Click()

    '在把文本复制到剪切板之前，需要选定一段文本

    TextBox1.SelStart = 0

    TextBox1.SelLength = TextBox1.TextLength

    TextBox1.Copy

    MyData.GetFromClipboard

    TextBox2.Text = MyData.GetText(1)

End Sub

Private Sub UserForm_Initialize()

    Set MyData = New DataObject

    TextBox1.Text = "Move this data to the Clipboard, to a DataObject, then to TextBox2!"

End Sub


PutInClipboard 方法示例

下面的示例，演示从 TextBox 到 DataObject，从 DataObject 到剪贴板以及从剪贴板到另一个 TextBox 的数据移动。PutInClipboard 方法把数据从 DataObject 转移到剪贴板。同时，该例子还使用了 SetText 和 Paste 方法。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 和 TextBox2 的两个 TextBox 控件。

• 	名为 CommandButton1 的 CommandButton。

Dim MyData As DataObject

Private Sub CommandButton1_Click()

    Set MyData = New DataObject

    MyData.SetText TextBox1.Text

    MyData.PutInClipboard

    TextBox2.Paste

End Sub

Private Sub UserForm_Initialize()

    TextBox1.Text = "Move this data to a DataObject, to the Clipboard, then to TextBox2!"

End Sub


DragBehavior 和 EnterFieldBehavior 属性示例

下面的示例，使用 DragBehavior 和 EnterFieldBehavior 属性，演示当进入控件和当把信息从一个控件拖入另一控件时可提供的不同效果。

该示例使用两个 TextBox 控件。可以给每个控件设置 DragBehavior 和 EnterFieldBehavior 并查看从一个控件到另一控件的拖动效果。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 ToggleButton1 和 ToggleButton2 的两个 ToggleButton 控件。这些控件与 TextBox1 相关联。

• 	名为 TextBox2 的 TextBox。

• 	名为 ToggleButton3 和 ToggleButton4 的两个 ToggleButton 控件。这些控件与 TextBox2 相关联。

Private Sub UserForm_Initialize()

    TextBox1.Text = "Once upon a time in a land ...,"

    ToggleButton1.Value = True

    ToggleButton1.Caption = "Drag Enabled"

    ToggleButton1.WordWrap = True

    TextBox1.DragBehavior = fmDragBehaviorEnabled

    ToggleButton2.Value = True

    ToggleButton2.Caption = "Recall Selection"

    ToggleButton2.WordWrap = True

    TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

    TextBox2.Text = "XXX, YYYY"

    ToggleButton3.Value = False

    ToggleButton3.Caption = "Drag Disabled"

    ToggleButton3.WordWrap = True

    TextBox2.DragBehavior = fmDragBehaviorDisabled

    ToggleButton4.Value = False

    ToggleButton4.Caption = "Select All"

    ToggleButton4.WordWrap = True

    TextBox2.EnterFieldBehavior = fmEnterFieldBehaviorSelectAll

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

       ToggleButton1.Caption = "Drag Enabled"

       TextBox1.DragBehavior = fmDragBehaviorEnabled

    Else

       ToggleButton1.Caption = "Drag Disabled"

       TextBox1.DragBehavior = fmDragBehaviorDisabled

    End If

End Sub

Private Sub ToggleButton2_Click()

    If ToggleButton2.Value = True Then

        ToggleButton2.Caption = "Recall Selection"

        TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

    Else

        ToggleButton2.Caption = "Select All"

        TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorSelectAll

    End If

End Sub

Private Sub ToggleButton3_Click()

    If ToggleButton3.Value = True Then

       ToggleButton3.Caption = "Drag Enabled"

       TextBox2.DragBehavior = fmDragBehaviorEnabled

    Else

       ToggleButton3.Caption = "Drag Disabled"

       TextBox2.DragBehavior = fmDragBehaviorDisabled

    End If

End Sub

Private Sub ToggleButton4_Click()

    If ToggleButton4.Value = True Then

        ToggleButton4.Caption = "Recall Selection"

        TextBox2.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

    Else

       ToggleButton4.Caption = "Select All"

       TextBox2.EnterFieldBehavior = fmEnterFieldBehaviorSelectAll

    End If

End Sub


GetFormat, GetText 和 SetText 方法示例

下面的示例，使用 GetFormat、GetText 和 SetText 方法在 DataObject 和剪贴板之间传输文本。

用户把文本键入 TextBox 然后单击 CommandButton1，把文本以标准文本格式传输到 DataObject。单击 CommandButton2，从 DataObject 中检索文本。单击 CommandButton3，用自定义格式把文本从 TextBox1 复制到 DataObject。单击 CommandButton4，用自定义格式从 DataObject 中检索文本。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 CommandButton1 到 CommandButton4 的四个 CommandButton 控件。

• 	名为 Label1 的 Label。

Dim MyDataObject As DataObject

Private Sub CommandButton1_Click()

'把标准格式放到剪贴板上

    If TextBox1.TextLength > 0 Then

        Set MyDataObject = New DataObject

        MyDataObject.SetText TextBox1.Text

        Label1.Caption = "Put on D.O."

        CommandButton2.Enabled = True

        CommandButton4.Enabled = False

    End If

End Sub

Private Sub CommandButton2_Click()

'从剪切板得到标准格式

    If MyDataObject.GetFormat(1) = True Then

        Label1.Caption = "Std format - " & MyDataObject.GetText(1)

    End If

End Sub

Private Sub CommandButton3_Click()

'把自定义格式放到剪切板上

    If TextBox1.TextLength > 0 Then

        Set MyDataObject = New DataObject

        MyDataObject.SetText TextBox1.Text, 233

        Label1.Caption = "Custom on D.O."

        CommandButton4.Enabled = True

        CommandButton2.Enabled = False

    End If

End Sub

Private Sub CommandButton4_Click()

'从剪切板得到自定义格式

    If MyDataObject.GetFormat(233) = True Then

        Label1.Caption = "Cust format - " & MyDataObject.GetText(233)

End If

End Sub

Private Sub UserForm_Initialize()

    CommandButton2.Enabled = False

    CommandButton4.Enabled = False

End Sub


CanPaste 属性、Paste 和 Copy 方法示例

下面的示例，使用 CanPaste 属性和 Past 方法来把 ComboBox 从剪贴板粘贴到 MultiPage 的 Page。这个示例还使用 SetFocus 和 Copy 方法把控件从窗体复制到剪贴板。

用户单击 CommandButton1 把 ComboBox 复制到剪贴板。用户双击（使用 DblClick 事件）CommandButton1 把 ComboBox 粘贴到 MultiPage 上。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 ComboBox1 的 ComboBox。

• 	名为 MultiPage1 的 MultiPage。

• 	名为 CommandButton1 的 CommandButton。

注意   这个例子还包括一子例程来说明把文本粘贴到控件。

Private Sub UserForm_Initialize()

    ComboBox1.AddItem "It's a beautiful day!"

    CommandButton1.Caption = "Copy ComboBox to Clipboard"

    CommandButton1.AutoSize = True

End Sub

Private Sub MultiPage1_DblClick(ByVal Index As Long, ByVal Cancel As MSForms.ReturnBoolean)

    If MultiPage1.Pages(MultiPage1.Value).CanPaste = True Then

        MultiPage1.Pages(MultiPage1.Value).Paste

    Else

        TextBox1.Text = "Can't Paste"

    End If

End Sub

Private Sub CommandButton1_Click()

        UserForm1.ComboBox1.SetFocus

        UserForm1.Copy

End Sub

'把文本粘贴到控件的代码

'Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

'   If ComboBox1.CanPaste = True Then

'        ComboBox1.Paste

'    Else

'        TextBox1.Text = "Can't Paste"

'    End If

'End Sub


ScrollBar 控件示例

下面的示例，演示单独的 ScrollBar，并在用户移动滚动框时报告其值的变化。用户通过单击控件两端的箭头、单击滚动框和任一箭头间的区域、或者拖动滚动框，都可以移动滚动框。当用户拖动滚动框时，Scroll 事件显示一条消息，指示用户为获得新值而滚动。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ScrollBar1 的 ScrollBar。

• 	名为 Label1 和 Label2 的两个 Label 控件。Label1 包含用户的定标信息。Label2 报告 delta 值。

Dim ScrollSaved As Integer      '前一个 ScrollBar 设置

Private Sub UserForm_Initialize()

    ScrollBar1.Min = -225

    ScrollBar1.Max = 289

    ScrollBar1.Value = 0

    Label1.Caption = "-225  -----Widgets-----   289"

    Label1.AutoSize = True

    Label2.Caption = ""

End Sub

Private Sub ScrollBar1_Change()

    Label2.Caption = " Widget Changes " & (ScrollSaved - ScrollBar1.Value)

End Sub

Private Sub ScrollBar1_Exit(ByVal Cancel as MSForms.ReturnBoolean)

    Label2.Caption = " Widget Changes " & (ScrollSaved - ScrollBar1.Value)

    ScrollSaved = ScrollBar1.Value

End Sub

Private Sub ScrollBar1_Scroll()

    Label2.Caption = (ScrollSaved - ScrollBar1.Value) & " Widget Changes by Scrolling"

End Sub


CanUndo 和 CanRedo 属性、UndoAction 和 RedoAction 方法示例

下面的示例，演示在文本框或 ComboBox 的文本区内如何撤销 (undo) 或重复 (redo) 文本编辑。这个示例检查撤销或重复操作是否能发生，然后执行适当的动作。示例使用了 CanUndo 和 CanRedo 属性及 UndoAction 和 RedoAction 方法。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 ComboBox1 的 ComboBox。

• 	名为 CommandButton1 和 CommandButton2 的两个 CommandButton 控件。

Private Sub CommandButton1_Click()

    If UserForm1.CanUndo = True Then

        UserForm1.UndoAction

        MsgBox "Undid IT"

    Else

        MsgBox "No undo performed."

    End If

End Sub

Private Sub CommandButton2_Click()

    If UserForm1.CanRedo = True Then

        UserForm1.RedoAction

        MsgBox "Redid IT"

    Else

        MsgBox "No redo performed."

    End If

End Sub

Private Sub UserForm_Initialize()

    TextBox1.Text = "Type your text here."

    ComboBox1.ColumnCount = 3

    ComboBox1.AddItem "Choice 1, column 1"

    ComboBox1.List(0, 1) = "Choice 1, column 2"

    ComboBox1.List(0, 2) = "Choice 1, column 3"

    CommandButton1.Caption = "Undo"

    CommandButton2.Caption = "Redo"

End Sub


BoundColumn 属性示例

下面的示例，演示 BoundColumn 属性如何影响 ListBox 的值。用户可以选择将 ListBox 的值设置为指定行的索引值，或设置为 ListBox 中指定的数据列。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ListBox1 的 ListBox。

• 	名为 Label1 的 Label。

• 	名为 OptionButton1, OptionButton2 和 OptionButton3 的三个 OptionButton 控件。

Private Sub UserForm_Initialize()

    ListBox1.ColumnCount = 2

    ListBox1.AddItem "Item 1, Column 1"

    ListBox1.List(0, 1) = "Item 1, Column 2"

    ListBox1.AddItem "Item 2, Column 1"

    ListBox1.List(1, 1) = "Item 2, Column 2"

    ListBox1.Value = "Item 1, Column 1"

    OptionButton1.Caption = "List Index"

    OptionButton2.Caption = "Column 1"

    OptionButton3.Caption = "Column 2"

    OptionButton2.Value = True

End Sub

Private Sub OptionButton1_Click()

    ListBox1.BoundColumn = 0

    Label1.Caption = ListBox1.Value

End Sub

Private Sub OptionButton2_Click()

    ListBox1.BoundColumn = 1

    Label1.Caption = ListBox1.Value

End Sub

Private Sub OptionButton3_Click()

    ListBox1.BoundColumn = 2

    Label1.Caption = ListBox1.Value

End Sub

Private Sub ListBox1_Click()

    Label1.Caption = ListBox1.Value

End Sub


List 属性示例

下面的示例，交换多列 ListBox 的列。该示例以两种方法使用 List 属性：

1.	在 ListBox 中访问和交换单个值。在这种用法中，List 有下标，指明特定值的行和列。

2.	用来自数组的值初始加载 ListBox。在这个用法中，List 没有下标。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 ListBox1 的 ListBox 和名为 CommandButton1 的 CommandButton。

Dim MyArray(6, 3)           '数组含有 ListBox 的列值。

Private Sub UserForm_Initialize()

    Dim i As Single

    ListBox1.ColumnCount = 3        '这个列表框包含三个数据列

    '加载整数值 MyArray

    For i = 0 To 5

        MyArray(i, 0) = i

        MyArray(i, 1) = Rnd

        MyArray(i, 2) = Rnd

    Next i

    '加载 ListBox1

    ListBox1.List() = MyArray

End Sub

Private Sub CommandButton1_Click()

'交换 1 列和 3 列的内容

    Dim i As Single

    Dim Temp As Single

    For i = 0 To 5

        Temp = ListBox1.List(i, 0)

        ListBox1.List(i, 0) = ListBox1.List(i, 2)

        ListBox1.List(i, 2) = Temp

    Next i

End Sub


ClientHeight, ClientLeft, ClientTop, ClientWidth 属性示例

在下面的示例中，当用户单击 CommandButton 时，Image 的尺寸将设置为 TabStrip 客户区的尺寸。这个代码示例使用下列属性：Height , Left Top , Width , ClientHeigh , ClientLeft , ClientTop 和 ClientWidth。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 CommandButton1 的 CommandButton。

• 	名为 TabStrip1 的 TabStrip。

• 	名为 Image1 的 Image。

Private Sub UserForm_Initialize()

CommandButton1.Caption = "Size Image to Tab Area"

CommandButton1.WordWrap = True

CommandButton1.AutoSize = True

End Sub

Private Sub CommandButton1_Click()

Image1.ZOrder (fmFront)                  '将图象放在 TabStrip 的前面

'从 TabStrip 的边缘来测量 ClientLeft 和 ClientTop，

'而不是从包含 TabStrip 的窗体的边缘。

Image1.Left = TabStrip1.Left + TabStrip1.ClientLeft

Image1.Top = TabStrip1.Top + TabStrip1.ClientTop

Image1.Width = TabStrip1.ClientWidth

Image1.Height = TabStrip1.ClientHeight

End Sub


MultiLine, WordWrap, ScrollBars 属性示例
MultiLine, WordWrap, ScrollBars 属性

下面的示例，在 TextBox 上演示 MultiLine，WordWrap 和 ScrollBars 属性。

要使用这个例子，需把这示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的 TextBox。

• 	名为 ToggleButton1 到 ToggleButton4 的四个 ToggleButton 控件。

若要浏览 TextBox 中的整个文本，单击 ToggleButton 控件，将 MultiLine 和 WordWrap 设置为 True。

当 MultiLine 为 True 时，按 SHIFT+ENTER 可以输入新的文本行。

手工改变 TextBox 的内容时，会出现 ScrollBars。

Private Sub UserForm_Initialize()

'初始化 TextBox 属性和转换按钮

TextBox1.Text = "Type your text here. Enter SHIFT+ENTER to move to a new line."

TextBox1.AutoSize = False

ToggleButton1.Caption = "AutoSize Off"

ToggleButton1.Value = False

ToggleButton1.AutoSize = True

TextBox1.WordWrap = False

ToggleButton2.Caption = "WordWrap Off"

ToggleButton2.Value = False

ToggleButton2.AutoSize = True

TextBox1.ScrollBars = 0

ToggleButton3.Caption = "ScrollBars Off"

ToggleButton3.Value = False

ToggleButton3.AutoSize = True

TextBox1.MultiLine = False

ToggleButton4.Caption = "Single Line"

ToggleButton4.Value = False

ToggleButton4.AutoSize = True

 End Sub

Private Sub ToggleButton1_Click()

'设置 AutoSize 属性和相关的 ToggleButton

If ToggleButton1.Value = True Then

TextBox1.AutoSize = True

ToggleButton1.Caption = "AutoSize On"

Else

TextBox1.AutoSize = False

ToggleButton1.Caption = "AutoSize Off"

End If

End Sub

Private Sub ToggleButton2_Click()

'设置 WordWrap 属性和相关的 ToggleButton

If ToggleButton2.Value = True Then

TextBox1.WordWrap = True

ToggleButton2.Caption = "WordWrap On"

Else

TextBox1.WordWrap = False

ToggleButton2.Caption = "WordWrap Off"

End If

End Sub

Private Sub ToggleButton3_Click()

'设置 ScrollBars 属性和相关的 ToggleButton

If ToggleButton3.Value = True Then

TextBox1.ScrollBars = 3

ToggleButton3.Caption = "ScrollBars On"

Else

TextBox1.ScrollBars = 0

ToggleButton3.Caption = "ScrollBars Off"

End If

End Sub

Private Sub ToggleButton4_Click()

'设置 MultiLine 属性和相关的 ToggleButton

If ToggleButton4.Value = True Then

TextBox1.MultiLine = True

ToggleButton4.Caption = "Multiple Lines"

Else

TextBox1.MultiLine = False

ToggleButton4.Caption = "Single Line"

End If

End Sub


拖放操作示例

下面的示例，演示从一个 ListBox 到另一个 ListBox 的拖放操作，使用 DataObject 来包含拖动文本。这个代码示范在 MouseMove 事件中使用 SetText 和 StartDrag 方法来完成拖放操作。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 ListBox1 和 ListBox2 的两个 ListBox 控件。还需在第二个 ListBox 中添加选择。

Private Sub ListBox2_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As Long, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)

    Cancel = True

    Effect = 1

End Sub

Private Sub ListBox2_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As Long, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)

    Cancel = True

    Effect = 1

    ListBox2.AddItem Data.GetText

End Sub

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Dim MyDataObject As DataObject

    If Button = 1 Then

        Set MyDataObject = New DataObject

        Dim Effect As Integer

        MyDataObject.SetText ListBox1.Value

        Effect = MyDataObject.StartDrag

    End If

End Sub

Private Sub UserForm_Initialize()

    For i = 1 To 10

        ListBox1.AddItem "Choice " & (ListBox1.ListCount + 1)

    Next i

End Sub


访问某页示例

下面的示例，以几种方法访问 MultiPage 的单个页：

• 	利用具有数值索引的 Pages 集合。

• 	利用具有字符串索引的 Pages 集合。

• 	利用具有 Item 方法的 Pages 集合。

• 	利用在 MultiPage 中的单个页的名称。

• 	使用 SelectedItem 属性。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 MultiPage1 的 MultiPage。

Private Sub UserForm_Initialize()

    Dim PageNAme As String

    For i = 0 To MultiPage1.Count - 1

        '使用索引（数值的或字符串的）

        MsgBox "MultiPage1.Pages(i).Caption = " & MultiPage1.Pages(i).Caption

        MsgBox "MultiPage1.Pages.Item(i).Caption = " & MultiPage1.Pages.Item(i).Caption

        PageNAme = MultiPage1.Pages(i).Name

        MsgBox "PageName = " & PageNAme

        MsgBox "MultiPage1.Pages(PageName).Caption = " & MultiPage1.Pages(PageNAme).Caption

        MsgBox "MultiPage1.Pages.Item(PageName).Caption = " & MultiPage1.Pages.Item(PageNAme).Caption

        '使用 Page 对象，而不引用 Pages 集合

        If i = 0 Then

            MsgBox "MultiPage1.Page1.Caption= " & MultiPage1.Page1.Caption

        ElseIf i = 1 Then

            MsgBox "MultiPage1.Page2.Caption = " & MultiPage1.Page2.Caption

        End If

        '使用 SelectedItem 属性

        MultiPage1.Value = i

        MsgBox "MultiPage1.SelectedItem.Caption = " & MultiPage1.SelectedItem.Caption

    Next i

End Sub


添加一控件示例

下面的示例，使用 Add 方法在运行时将控件添加到窗体中，并且用 AddControl 事件来确认控件已被加入。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 CommandButton1 的 CommandButton。

• 	名为 Label1 的 Label。

Dim Mycmd as Control

Private Sub CommandButton1_Click()

Set Mycmd = Controls.Add("Forms.CommandButton.1") ', CommandButton2，Visible)

Mycmd.Left = 18

Mycmd.Top = 150

Mycmd.Width = 175

Mycmd.Height = 20

Mycmd.Caption = "This is fun." & Mycmd.Name

End Sub

Private Sub UserForm_AddControl(ByVal Control As MSForms.Control)

Label1.Caption = "Control was Added."

End Sub


在 MultiPage 中添加控件示例

下面的示例，使用 Add , Clear 和 Remove 方法，在运行时在 MultiPag 的 Page 中添加和删除控件。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 MultiPage1 的 MultiPage。

• 	名为 CommandButton1 到 CommandButton3 的 三个 CommandButton 控件。

Dim MyTextBox As Control

Private Sub CommandButton1_Click()

Set MyTextBox = MultiPage1.Pages(0).Controls.Add("Forms.TextBox.1", "MyTextBox", Visible)

End Sub

Private Sub CommandButton2_Click()

MultiPage1.Pages(0).Controls.Clear

End Sub

Private Sub CommandButton3_Click()

If MultiPage1.Pages(0).Controls.Count > 0  Then

MultiPage1.Pages(0).Controls.Remove "MyTextBox"

End If

End Sub

Private Sub UserForm_Initialize()

CommandButton1.Caption = "Add control"

CommandButton2.Caption = "Clear controls"

CommandButton3.Caption = "Remove control"

End Sub


ListBox 控件示例

下面的示例，使用 AddItem , RemoveItem 和 SetFocus 方法以及 ListIndex 和 ListCount 属性来添加和删除 ListBox 的内容。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ListBox1 的 ListBox。

• 	名为 CommandButton1 和 CommandButton2 的两个 CommandButton 控件。

Dim EntryCount As Single

Private Sub CommandButton1_Click()

    EntryCount = EntryCount + 1

    ListBox1.AddItem (EntryCount & " - Selection")

End Sub

Private Sub CommandButton2_Click()

    ListBox1.SetFocus

    '确认 ListBox 包含列表项

    If ListBox1.ListCount >= 1 Then

        '如果没有选中的内容，用上一次的列表项。

        If ListBox1.ListIndex = -1 Then

            ListBox1.ListIndex = ListBox1.ListCount - 1

        End If

        ListBox1.RemoveItem (ListBox1.ListIndex)

    End If

End Sub

Private Sub UserForm_Initialize()

    EntryCount = 0

    CommandButton1.Caption = "Add Item"

    CommandButton2.Caption = "Remove Item"

End Sub


ZOrder 方法示例

下面的示例，设置 TextBox 的 z-order，这样用户可以显示整个的 TextBox（通过将其置于 z-order 的前面），或者可以把 TextBox 置于其它控件的后面（通过将其置于 z-order 的后面）。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 到 TextBox3 的 三个 TextBox 控件。

• 	名为 ToggleButton1 的 ToggleButton。

Private Sub ToggleButton1_Click()

If ToggleButton1.Value = True Then

TextBox2.ZOrder (fmTop)          '将 TextBox2 置于 z-order 的顶端

'更新 ToggleButton 标题来标识下一个状态

ToggleButton1.Caption = "Send TextBox2 to back"

Else

TextBox2.ZOrder (1)              '将 TextBox2 置于 z-order 底端

'更新 ToggleButton 标题来标识下一个状态

ToggleButton1.Caption = "Bring TextBox2 to front"

End If

End Sub

Private Sub UserForm_Initialize()

'建立文本框在窗体中显示 z-order

TextBox1.Text = "TextBox 1"

TextBox2.Text = "TextBox 2"

TextBox3.Text = "TextBox 3"

TextBox1.Height = 40

TextBox2.Height = 40

TextBox3.Height = 40

TextBox1.Width = 60

TextBox2.Width = 60

TextBox3.Width = 60

TextBox1.Left = 10

TextBox1.Top = 10

TextBox2.Left = 25      '将 TextBox2 重叠于 TextBox1 上

TextBox2.Top = 25

TextBox3.Left = 40      '将 TextBox3 重叠于 TextBox2 和TextBox1 之上

TextBox3.Top = 40

ToggleButton1.Value = False

ToggleButton1.Caption = "Bring TextBox2 to Front"

ToggleButton1.Left = 10

ToggleButton1.Top = 90

ToggleButton1.Width = 50

ToggleButton1.Height = 50

End Sub


Accelerator 和 Caption 属性示例

在这个示例中，每当用户用鼠标或加速键来单击按钮时，改变一次 CommandButton 的 Accelerator 和 Caption 属性。Click 事件包含改变 Accelerator 和 Caption 属性的代码。

要试这个例子，把代码粘贴到包含名为 CommandButton1 的 CommandButton 的窗体的 Declarations 部分。

Private Sub UserForm_Initialize()

CommandButton1.Accelerator  = "C"         '将加速键设置为 ALT + C

End Sub

Private Sub CommandButton1_Click ()

If CommandButton1.Caption = "OK" Then     '检查标题，然后更改它。

CommandButton1.Caption = "Clicked"

CommandButton1.Accelerator  = "C"         '将加速键设置为 ALT + C

Else

CommandButton1.Caption = "OK"

CommandButton1.Accelerator  = "O"         '将加速键设置为 ALT + O

End If

End Sub


AutoSize 属性示例

下面的示例，用一个单行 TextBox 和一个多行 TextBox 演示 AutoSize 属性的效果。用户可以将文本输入任一个 TextBox，并将 AutoSize 打开或关闭而不考虑 TextBox 的内容。这个代码示例还使用了 Text 属性。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 和 TextBox2 的两个 TextBox 控件。

• 	名为 ToggleButton1 的 ToggleButton。

Private Sub UserForm_Initialize()

    TextBox1.Text = "Single-line TextBox. Type your text here."

    TextBox2.MultiLine = True

    TextBox2.Text = "Multi-line TextBox. Type your text here. Use CTRL+ENTER to start a new line."

    ToggleButton1.Value = True

    ToggleButton1.Caption = "AutoSize On"

    TextBox1.AutoSize = True

    TextBox2.AutoSize = True

End Sub

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        ToggleButton1.Caption = "AutoSize On"

        TextBox1.AutoSize = True

        TextBox2.AutoSize = True

    Else

        ToggleButton1.Caption = "AutoSize Off"

        TextBox1.AutoSize = False

        TextBox2.AutoSize = False

    End If

End Sub


Bold, Italic, Size, StrikeThrough, Underline 和 Weight 属性示例

下面的示例，演示 Font 对象及与字体相关的 Bold , Italic , Size , StrikeThrough , Underline 和 Weight 属性。这个例子还演示了，如何直接或者用一个别名来操作对象的字体属性。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Label1 的 Label。

• 	名为 ToggleButton1 到 ToggleButton4 的四个 ToggleButton 控件。

• 	名为 Label2 的第二个 Label 和名为 TextBox1 的 TextBox。

Dim MyFont As StdFont

Private Sub ToggleButton1_Click()

    If ToggleButton1.Value = True Then

        MyFont.Bold = True            '使用 MyFont 别名来控制字体

        ToggleButton1.Caption = "Bold On"

        MyFont.Size = 22              '增大字体的尺寸

    Else

        MyFont.Bold = False

        ToggleButton1.Caption = "Bold Off"

        MyFont.Size = 8               '将字体尺寸恢复到初始尺寸

    End If

    TextBox1.Text = Str(MyFont.Weight)  'Bold 和 Weight 是相关的。

End Sub

Private Sub ToggleButton2_Click()

    If ToggleButton2.Value = True Then

        Label1.Font.Italic = True            '直接使用 Label1.Font

        ToggleButton2.Caption = "Italic On"

    Else

        Label1.Font.Italic = False

        ToggleButton2.Caption = "Italic Off"

    End If

End Sub

Private Sub ToggleButton3_Click()

    If ToggleButton3.Value = True Then

        Label1.Font.Strikethrough = True            '直接使用 Label1.Font

        ToggleButton3.Caption = "StrikeThrough On"

    Else

        Label1.Font.Strikethrough = False

        ToggleButton3.Caption = "StrikeThrough Off"

    End If

End Sub

Private Sub ToggleButton4_Click()

    If ToggleButton4.Value = True Then

        MyFont.Underline = True            '使用 Label1.Font 的别名 MyFont

        ToggleButton4.Caption = "Underline On"

    Else

        Label1.Font.Underline = False

        ToggleButton4.Caption = "Underline Off"

    End If

End Sub

Private Sub UserForm_Initialize()

    Set MyFont = Label1.Font

    ToggleButton1.Value = True

    ToggleButton1.Caption = "Bold On"

    Label1.AutoSize = True	'设置 Label1 的尺寸

    Label1.AutoSize = False

    ToggleButton2.Value = False

    ToggleButton2.Caption = "Italic Off"

    ToggleButton3.Value = False

    ToggleButton3.Caption = "StrikeThrough Off"

    ToggleButton4.Value = False

    ToggleButton4.Caption = "Underline Off"

    Label2.Caption = "Font Weight"

    TextBox1.Text = Str(Label1.Font.Weight)

    TextBox1.Enabled = False

End Sub


边框和彩色增强示例

下面的示例，演示 BorderStyle 和 SpecialEffect 属性，通过这些属性显示每一个可用边框。该例还演示如何用 BackColor , BorderColor 和 ForeColor 属性来控制颜色的设置。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 到 TextBox6 的六个 TextBox 控件。

• 	名为 ToggleButton1 和 ToggleButton2 的两个 ToggleButton 控件。

Private Sub UserForm_Initialize()

'用边框类型或特殊效果以及前景和

'背景颜色初始化每个 TextBox，

'使用边框类型初始化 TextBox1

TextBox1.Text = "BorderStyle-Single"

TextBox1.BorderStyle = fmBorderStyleSingle

TextBox1.BorderColor = RGB(255, 128, 128)   '赭色

TextBox1.ForeColor = RGB(255, 255, 0)       '黄色

TextBox1.BackColor = RGB(0, 128, 64)        '＃2绿色

'使用特别效果初始化 TextBoxes 2 到 6

TextBox2.Text = "Flat"

TextBox2.SpecialEffect = fmSpecialEffectFlat

TextBox2.ForeColor = RGB(64, 0, 0)          '棕色

TextBox2.BackColor = RGB(0, 0, 255)         '蓝色

'初始化 TextBox2 的背景类型为不透明的。

TextBox2.BackStyle = fmBackStyleOpaque

TextBox3.Text = "Etched"

TextBox3.SpecialEffect = fmSpecialEffectEtched

TextBox3.ForeColor = RGB(128, 0, 255)       '紫色

TextBox3.BackColor = RGB(0, 255, 255)       '青色

'为以后使用，定义 BorderColor (当 borderstyle=fmBorderStyleSingle)

TextBox3.BorderColor = RGB(0, 0, 0)         '黑色

TextBox4.Text = "Bump"

TextBox4.SpecialEffect = fmSpecialEffectBump

TextBox4.ForeColor = RGB(255, 0, 255)       '深红色

TextBox4.BackColor = RGB(0, 0, 100)         '海蓝色

TextBox5.Text = "Raised"

TextBox5.SpecialEffect = fmSpecialEffectRaised

TextBox5.ForeColor = RGB(255, 0, 0)         '红色

TextBox5.BackColor = RGB(128, 128, 128)     '灰色

TextBox6.Text = "Sunken"

TextBox6.SpecialEffect = fmSpecialEffectSunken

TextBox6.ForeColor = RGB(0, 64, 0)          '黄褐色

TextBox6.BackColor = RGB(0, 255, 0)         '＃1绿色

ToggleButton1.Caption = "Swap styles"

ToggleButton2.Caption = "Transparent/Opaque background"

End Sub

Private Sub ToggleButton1_Click()

'在 TextBox1 和 TextBox3 间转换边框

If ToggleButton1.Value = True Then

'把 TextBox1 从 BorderStyle 改变到 Etched

TextBox1.Text = "Etched"

TextBox1.SpecialEffect = fmSpecialEffectEtched

'把 TextBox3 从 Etched 改变到 BorderStyle

TextBox3.Text = "BorderStyle-Single"

TextBox3.BorderStyle = fmBorderStyleSingle

Else

'把 TextBox1 变回 BorderStyle

TextBox1.Text = "BorderStyle-Single"

TextBox1.BorderStyle = fmBorderStyleSingle

'把 TextBox3 变回 Etched

TextBox3.Text = "Etched"

TextBox3.SpecialEffect = fmSpecialEffectEtched

End If

End Sub

Private Sub ToggleButton2_Click()

'将背景设置为不透明或透明

If ToggleButton2.Value = True Then

'将 TextBox2 变为透明背景

TextBox2.BackStyle = fmBackStyleTransparent

Else

'将 TextBox2 变为不透明背景

TextBox2.BackStyle = fmBackStyleOpaque

End If

End Sub


Column 属性示例

'

下面的示例，加载带数据的二维数组，随后用 Column 和 List 属性加载两个 ListBox 控件。注意在加载期间 Column 属性将转置数组元素。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 ListBox1 和 ListBox2 的两个 ListBox 控件。

Dim MyArray(6,3)

Private Sub UserForm_Initialize()

    Dim i As Single

    ListBox1.ColumnCount = 3        '第一个列表框包含三个数据列

    ListBox2.ColumnCount = 6        '第二个框包含六个数据列

    '把整数值加载到 MyArray 的第一列

    For i = 0 To 5

        MyArray(i, 0) = i

    Next i

    '加载 MyArray 的列 2 和列 3

    MyArray(0, 1) = "Zero"

    MyArray(1, 1) = "One"

    MyArray(2, 1) = "Two"

    MyArray(3, 1) = "Three"

    MyArray(4, 1) = "Four"

    MyArray(5, 1) = "Five"

    MyArray(0, 2) = "Zero"

    MyArray(1, 2) = "Un ou Une"

    MyArray(2, 2) = "Deux"

    MyArray(3, 2) = "Trois"

    MyArray(4, 2) = "Quatre"

    MyArray(5, 2) = "Cinq"

    '把数据加载到 ListBox1 和 ListBox2

    ListBox1.List() = MyArray

    ListBox2.Column() = MyArray

End Sub


ColumnWidths 属性示例

下面的示例，使用 ColumnWidths 属性来改变多列 ListBox 的列宽。例子使用三个 TextBox 控件来指定单个列的宽度并使用 Exit 事件来指定每一个 TextBox 的度量单位。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 ListBox1 的 ListBox。

• 	名为 TextBox1 到 TextBox3 的 三个 TextBox 控件。

• 	名为 CommandButton1 的 CommandButton。

试着输入 0 值来隐藏列。

Dim MyArray(2, 3) As String

Private Sub CommandButton1_Click()

'被分号分开的每一列，都需要 ColumnWidths 值

ListBox1.ColumnWidths = TextBox1.Text & ";" & TextBox2.Text & ";" & TextBox3.Text

End Sub

Private Sub TextBox1_Exit(ByVal Cancel as MSForms.ReturnBoolean)

'ColumnWidths 接受点（没有单位），英寸或厘米；

将英寸设为缺省

If Not (InStr(TextBox1.Text, "in") > 0 Or InStr(TextBox1.Text, "cm") > 0) Then

TextBox1.Text = TextBox1.Text & " in"

End If

End Sub

Private Sub TextBox2_Exit(ByVal Cancel as MSForms.ReturnBoolean)

'ColumnWidths 接受点（没有单位），英寸或厘米；

将英寸设为缺省

If Not (InStr(TextBox2.Text, "in") > 0 Or InStr(TextBox2.Text, "cm") > 0) Then

TextBox2.Text = TextBox2.Text & " in"

End If

End Sub

Private Sub TextBox3_Exit(ByVal Cancel as MSForms.ReturnBoolean)

'ColumnWidths 接受点（不是单位），英寸或厘米；

将英寸设为缺省

If Not (InStr(TextBox3.Text, "in") > 0 Or InStr(TextBox3.Text, "cm") > 0) Then

TextBox3.Text = TextBox3.Text & " in"

End If

End Sub

Private Sub UserForm_Initialize()

Dim i, j, Rows As Single

ListBox1.ColumnCount = 3

Rows = 2

For j = 0 To ListBox1.ColumnCount - 1

For i = 0 To Rows - 1

MyArray(i, j) = "Row " & i & ", Column " & j

Next i

Next j

ListBox1.List() = MyArray           '把 MyArray 加载到 ListBox1

TextBox1.Text = "1 in"              '初始为 1 英寸列

TextBox2.Text = "1 in"

TextBox3.Text = "1 in"

End Sub


ControlTipText 属性示例

下面的示例，为 MultiPage 中的三个 CommandButton 控件和两个 Page 对象定义 ControlTipText 属性。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 MultiPage1 的 MultiPage。

• 	名为 CommandButton1 到 CommandButton3 的三个 CommandButton 控件。

注意   对于 MultiPage 的单个 Page，当 MultiPage 或者 MultiPage 的当前页上的控件有焦点时，ControlTipText 变为有效。

Private Sub UserForm_Initialize()

MultiPage1.Page1.ControlTipText = "Here in page 1"

MultiPage1.Page2.ControlTipText = "Now in page 2"

CommandButton1.ControlTipText = "And now here's"

CommandButton2.ControlTipText = "a tip from"

CommandButton3.ControlTipText = "your controls!"

End Sub


CurLine, CurTargetX, CurX 和 Text 属性示例

下面的示例，跟踪多行 TextBox 中的 CurLine、CurTarget 和 CurX 属性设置。随着用户使用键盘键入 Text 属性、移动插入点和扩展选择，这些设置在 KeyUp 事件中改变。

要使用这个例子，需按如下步骤操作：

1.	把示例编码复制到某窗体的 Declarations 部分。

2.	把名为 TextBox1 的一个大 TextBox 加入该窗体。

3.	把名为 TextBox2, TextBox3 和 TextBox4 的三个 TextBox 控件添加到一个列中。

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

TextBox2.Text = TextBox1.CurLine

TextBox3.Text = TextBox1.CurX

TextBox4.Text = TextBox1.CurTargetX

End Sub

Private Sub UserForm_Initialize()

TextBox1.MultiLine = True

TextBox1.Text = "Type your text here. User CTRL + ENTER to start a new line."

End Sub


HideSelection 属性示例

'

下面的示例，在一个窗体或多于一个窗体的上下文中演示 HideSelection 属性。用户可以在 TextBox 中选定文本，并按 TAB 键到达窗体上的其它控件，并且把焦点转移到第二个窗体。这个代码示例还使用了 SetFocus 方法及 EnterFieldBehavior，MultiLine 和 Value 属性。

要使用这个例子，需按如下步骤操作：

1.	把示例编码（最后事件子例程除外）复制到窗体的 Declarations 部分。

2.	添加名为 TextBox1 的大的 TextBox，名为 ToggleButton1 的 ToggleButton 和名为 CommandButton1 的 CommandButton。

3.	将名为 UserForm2 的第二个窗体插入此工程。

4.	把此列表最后的事件子例程粘贴到 UserForm2 的 Declarations 部分。

5.	在此窗体中，加入名为 CommandButton1 的 CommandButton。

6.	运行 UserForm1。

' ***** UserForm1 的代码 *****

Private Sub CommandButton1_Click()

TextBox1.SetFocus

UserForm2.Show                             '显示第二个窗体

End Sub

Private Sub ToggleButton1_Click()

If ToggleButton1.Value = True Then

TextBox1.HideSelection = False

ToggleButton1.Caption = "Selection Visible"

Else

TextBox1.HideSelection = True

ToggleButton1.Caption = "Selection Hidden"

End If

End Sub

Private Sub UserForm_Initialize()

TextBox1.MultiLine = True

TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

'填充 TextBox

TextBox1.Text = "SelText indicates the starting point of selected text, or the insertion point if no text is selected." _

& Chr$(10) & Chr$(13) & "The SelStart property is always valid, even when the control does not have focus. Setting SelStart to a value less than zero creates an error. " _

& Chr$(10) & Chr$(13) & "Changing the value of SelStart cancels any existing selection in the control, places an insertion point in the text, and sets the SelLength property to zero."

TextBox1.HideSelection = True

ToggleButton1.Caption = "Selection Hidden"

ToggleButton1.Value = False

End Sub

'

' ***** UserForm2 的代码 *****

Private Sub CommandButton1_Click()

UserForm2.Hide

End Sub


Picture 和 PicturePosition 属性示例

下面的示例，使用 ComboBox 来显示控件的图片位置选项。每次用户单击列表选择，在 CommandButton 上图片和标题被更新。这个代码示例还使用了 AddItem 方法来移居 ComboBox 选择。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Label1 的 Label。

• 	名为 CommandButton1 的 CommandButton。

• 	名为 ComboBox1 的 ComboBox。

Private Sub UserForm_Initialize()

Label1.Left = 18

Label1.Top = 12

Label1.Height = 12

Label1.Width = 190

Label1.Caption = "Select picture placement relative to the caption."

'把列表条目加入组合框。每一条目的值符合

'组合框中对应的 ListIndex 的值。

ComboBox1.AddItem "Left Top"        'ListIndex = 0

ComboBox1.AddItem "Left Center"     'ListIndex = 1

ComboBox1.AddItem "Left Bottom"     'ListIndex = 2

ComboBox1.AddItem "Right Top"       'ListIndex = 3

ComboBox1.AddItem "Right Center"    'ListIndex = 4

ComboBox1.AddItem "Right Bottom"    'ListIndex = 5

ComboBox1.AddItem "Above Left"      'ListIndex = 6

ComboBox1.AddItem "Above Center"    'ListIndex = 7

ComboBox1.AddItem "Above Right"    'ListIndex = 8

ComboBox1.AddItem "Below Left"      'ListIndex = 9

ComboBox1.AddItem "Below Center"    'ListIndex = 10

ComboBox1.AddItem "Below Right"    'ListIndex = 11

ComboBox1.AddItem "Centered"        'ListIndex = 12

ComboBox1.Style = fmStyleDropDownList  '使用下拉列表

ComboBox1.BoundColumn = 0            '组合框值是 ListIndex 值

ComboBox1.ListIndex = 0              '把组合框设置为第一个条目

ComboBox1.Left = 18

ComboBox1.Top = 36

ComboBox1.Width = 90

ComboBox1.ListWidth = 90

'初始化 CommandButton1

CommandButton1.Left = 230

CommandButton1.Top = 36

CommandButton1.Height = 120

CommandButton1.Width = 120

'注意：确认引用的位图文件是存在于系统中的，并在文件名中包括路径

CommandButton1.Picture = LoadPicture("c:\windows\argyle.bmp")

CommandButton1.PicturePosition = ComboBox1.Value

End Sub

Private Sub ComboBox1_Click()

Select Case ComboBox1.Value

Case 0  '上左

CommandButton1.Caption = "Left Top"

CommandButton1.PicturePosition = fmPicturePositionLeftTop

Case 1  '中左

CommandButton1.Caption = "Left Center"

CommandButton1.PicturePosition = fmPicturePositionLeftCenter

Case 2  '下左

CommandButton1.Caption = "Left Bottom"

CommandButton1.PicturePosition = fmPicturePositionLeftBottom

Case 3  '上右

CommandButton1.Caption = "Right Top"

CommandButton1.PicturePosition = fmPicturePositionRightTop

Case 4  '中右

CommandButton1.Caption = "Right Center"

CommandButton1.PicturePosition = fmPicturePositionRightCenter

Case 5  '下右

CommandButton1.Caption = "Right Bottom"

CommandButton1.PicturePosition = fmPicturePositionRightBottom

Case 6  '左上

CommandButton1.Caption = "Above Left"

CommandButton1.PicturePosition = fmPicturePositionAboveLeft

Case 7  '中上

CommandButton1.Caption = "Above Center"

CommandButton1.PicturePosition = fmPicturePositionAboveCenter

Case 8  '右上

CommandButton1.Caption = "Above Right"

CommandButton1.PicturePosition = fmPicturePositionAboveRight

Case 9  '左下

CommandButton1.Caption = "Below Left"

CommandButton1.PicturePosition = fmPicturePositionBelowLeft

Case 10 '中下

CommandButton1.Caption = "Below Center"

CommandButton1.PicturePosition = fmPicturePositionBelowCenter

Case 11 '右下

CommandButton1.Caption = "Below Right"

CommandButton1.PicturePosition = fmPicturePositionBelowRight

Case 12 '中

CommandButton1.Caption = "Centered"

CommandButton1.PicturePosition = fmPicturePositionCenter

End Select

End Sub


工作表绑定示例

下面的示例，在 ListBox 中使用工作表单元的范围，并在用户从列表中选定一行时，在另一工作表单元中显示该行索引。这个代码示例使用了 RowSource , BoundColumn 和 ControlSource 属性。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 LIstBox1 的 ListBox。在工作表单元 A1:E4 中输入数据。还需确认单元 A6 没有数据。

Private Sub UserForm_Initialize()

ListBox1.ColumnCount = 5

ListBox1.RowSource = "a1:e4"

ListBox1.ControlSource = "a6"

ListBox1.BoundColumn = 0          '把 ListIndex 置于单元 a6

End Sub


文本选择属性示例

下面的示例，跟踪与选择相关的属性（SelLength , SelStart 和 SelText），这些属性在用户用键盘移动插入点和扩展选定时改变。这个例子还使用了 Enabled 和 EnterFieldBehavior 属性。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 TextBox1 的一个大的 TextBox。

• 	名为 TextBox2 到 TextBox4 的在一列中的三个 TextBox 控件。

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

TextBox2.Text = TextBox1.SelStart

TextBox3.Text = TextBox1.SelLength

TextBox4.Text = TextBox1.SelText

End Sub

Private Sub UserForm_Initialize()

TextBox1.MultiLine = True

TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

TextBox1.Text = "Type your text here. Use CTRL+ENTER to start a new line."

End Sub


通过控件集合访问控件的示例

下面的示例，使用 For Each...Next 循环在 Controls 集合中访问单个控件。当用户按 CommandButton1 时，使用 Move 方法将其它控件置于沿着窗体的左边缘的列。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 CommandButton1 的 CommandButton 和几个其它控件。

Dim CtrlHeight As Single

Dim CtrlTop As Single

Dim CtrlGap As Single

Private Sub CommandButton1_Click()

Dim MyControl As Control

CtrlTop = 5

For Each MyControl In Controls

If MyControl.Name = "CommandButton1" Then

'不要移动这个控件或调整这个控件的大小。

Else

'Move 方法，使用命名参数

MyControl.Move Top:=CtrlTop, Height:=CtrlHeight, Left:=5

'Move 方法，使用未命名的参数（左，顶，宽，高）

'MyControl.Move 5, CtrlTop, ,CtrlHeight

'计算下一控件的顶坐标

CtrlTop = CtrlTop + CtrlHeight + CtrlGap

End If

Next

End Sub

Private Sub UserForm_Initialize()

CtrlHeight = 20

CtrlGap = 5

CommandButton1.Caption = "Click to move controls"

CommandButton1.AutoSize = True

CommandButton1.Left = 120

CommandButton1.Top = CtrlTop

End Sub


Cycle 属性示例

下面的示例，为 Frame 和 MultiPage 中的两个 Page 对象定义 Cycle 属性。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Frame1 的 Frame。

• 	名为 MultiPage1 的 MultiPage。其中 MultiPage1 包含名为 Page1 和 Page2 的两个对象。

• 	名为 CommandButton1 和 CommandButton2 的两个 CommandButton 控件。

在该窗体中，Frame 和 MultiPag 的每一 Page 中都放置了几个控件，这样就可看到 Cycle 如何影响 Frame 和 MultiPage 的 tab 顺序。

用户应按 TAB 键穿过一些控件来观察 Cycle 如何影响 tab 顺序。按 CommandButton1 扩展 tab 顺序，把 Frame 和 Page 对象中的控件纳入 tab 顺序。按 CommandButton2 限制 tab 顺序。

Private Sub RestrictCycles()

'限制 Frame 和 Page 对象的 tab 顺序

    Frame1.Cycle = fmCycleCurrentForm

    MultiPage1.Page1.Cycle = fmCycleCurrentForm

    MultiPage1.Page2.Cycle = fmCycleCurrentForm

End Sub

Private Sub UserForm_Initialize()

RestrictCycles

End Sub

Private Sub CommandButton1_Click()

'扩展 tab 顺序（添加 Frame 和 page 对象）

    Frame1.Cycle = fmCycleAllForms

    MultiPage1.Page1.Cycle = fmCycleAllForms

    MultiPage1.Page2.Cycle = fmCycleAllForms

End Sub

Private Sub CommandButton2_Click()

RestrictCycles

End Sub


控件集合的 Move 方法示例

下面的示例，对 Controls 集合使用 Move 方法，来演示如何移动窗体上的全部控件。用户单击 CommandButton 来移动控件。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含名为 CommandButton1 的 CommandButto 和几个其它控件。

Private Sub CommandButton1_Click()

    '将窗体上的每一控件向右移动 25 点，向上移动 25 点。

Controls.Move 25, -25

End Sub


Parent 属性示例

下面的示例，使用 Parent 属性来引用包含特定控件的控件或窗体。

要使用这个例子，需把示例编码复制到某窗体的 Declarations 部分。该窗体要包含：

• 	名为 Label1 和 Label2 的两个 Label 控件。

• 	名为 CommandButton1 的 CommandButton。

• 	选择一个或多个其它控件。

Dim MyControl As Object

Dim MyParent As Object

Dim ControlsIndex As Integer

Private Sub UserForm_Initialize()

    ControlsIndex = 0

    CommandButton1.Caption = "Get Control and Parent"

    CommandButton1.AutoSize = True

    CommandButton1.WordWrap = True

End Sub

Private Sub CommandButton1_Click()

    '处理 UserForm 的控件集合

    Set MyControl = Controls.Item(ControlsIndex)

    Set MyParent = MyControl.Parent

    Label1.Caption = MyControl.Name

    Label2.Caption = MyParent.Name

    '为 Userform 的下一个控件准备索引。

    ControlsIndex = ControlsIndex + 1

    If ControlsIndex >= Controls.Count Then

        ControlsIndex = 0

    End If

End Sub


什么是 MultiPage？

MultiPage 是一个控件，其中包含由一个或多个页面组成的一个集合。

MultiPage 中的每一个 Page 都是一个窗体， 它含有自己的控件，并且有唯一的布局。一般情况下，在 MultiPage 中的页面都有标签，以便于选择单个页面。

按照缺省，一个 MultiPage 包含两个页面，称作 Page1 和 Page2 。其中的每个页面都是一个 Page 对象，合在一起就表示是 MultiPage 的 Pages 集合。如果再继续添加页面，它们都是同一个 Pages 集合中的一个部分。


什么是 TabStrip？

TabStrip 是一个控件，其中包含由一个或多个标签组成的一个集合。

TabStrip 的每一个 Tab 都是一个可供选择的单独的对象。显而易见，TabStrip 也包括有一个用户区，由 TabStrip 中的所有标签共享。

按照缺省，一个 TabStrip 包含两个页面，称作 Tab1 和 Tab2。其中的每个页面都是一个 Tab 对象，合在一起就表示是 TabStrip 的 Tabs 集合。如果再继续添加页面，它们都是同一个 Tabs 集合中的一个部分。


应该使用 MultiPage 还是 TabStrip？

如果需要使用单一数据布局，可用 TabStrip，并且将每个数据集映射到它自己的 Tab 中。如果需要使用多个数据布局，可用 MultiPage ，并且将每个布局指定到它自己的 Page 中。

和 MultiPage 的 Page 不同，TabStrip 的客户区不是一个分离的窗体，而只是含有该 TabStrip 的窗体的一个部分。TabStrip 的边框定义了窗体的区域，该窗体可与标签关联。为了在 TabStrip 的用户区放置一个控件，往含有 TabStrip 的窗体添加一个控件即可。


使用文本框的提示

TextBox 是一个灵活的控件，受下列属性的影响：Text， MultiLine，WordWrap，和 AutoSize。

Text 包含要在文本框中显示的文本。

MultiLine 控制 TextBox 是单行还是多行显示文本。换行字符标识一行在何处结束并开始新的一行。如果 MultiLine 为 False，则文本被截断，用换行取而代之。

如果文本的长度比 TextBox 的宽度长，WordWrap 允许 TextBox 根据其宽度自动换行。

如果不使用 WordWrap，当 TextBox 在文本中遇到换行字符时，开始一个新行。如果关闭 WordWrap，TextBox.中可以有不能完全适合其宽度的文本行。TextBox 根据该宽度，显示宽度以内的文本部分，截断宽度以外的那文本部分。只有当 MultiLine 为 True 时，WordWrap 才起作用。

AutoSize 控制 TextBox 当所有的文本都显示时是否需要调整大小。当 TextBox 使用 AutoSize 时，TextBox 的宽度按照 TextBox 中的文本量以及显示该文本的字体大小收缩或扩充。

AutoSize 适用于下列状况：

• 	显示一行或多行的标题。

• 	显示单行 TextBox 的目录。

• 	显示多行 TextBox 的目录，该目录对用户是只读的。

注意   空的 TextBox 不要使用 AutoSize，这时可用 MultiLine 和 WordWrap 属性。这样，当往 TextBox 中输入文本时，TextBox 自动调整一个文本框，高一个字符，长和文本长度一样。


创建标准列表框

1.	在“属性”窗口，选择 ListStyle 属性。

2.	单击下拉箭头显示一个可用样式的列表。

3.	从列表中选取“平面”。


创建带有选项按钮或复选按钮的列表框

1.	在“属性”窗口，选择 ListStyle 属性。

2.	单击下拉箭头显示一个可用样式的列表。

3.	从列表中选取“选项”。

当 ListStyle 属性设置为 Option 时，MultiSelect 属性决定是否把复选按钮或选项按钮显示在列表框中。当 MultiSelect 为 Single 时，选项按钮出现在列表框中。 当 MultiSelect 为 Multi 或 Extended 时， 复选按钮出现在列表框中。


ListBox 样式

有两种表示样式 ListBox 可供选取。每种样式提供不同的方法选择列表中的项目。

如果是“平面”样式，每个项目分散在行中，高亮一行或多行可以选择一个项目。

如果是“选项”样式，在每行的开头有一个选择按钮或复选按钮。此时，单击选择按钮或复选按钮，就可以选择一个项目。只有当 MultiSelect 属性为 True 时，才会出现复选框。


DataObject 和剪贴板的不同

DataObject 和剪贴板都是提供了一种方法，将数据从一个地方移到另一个地方。作为一个应用程序开发人员，无论是使用 DataObject 还是使用剪贴板，都要记住下列几项要点：

• 	DataObject 和剪贴板都是可以同时保存多片数据，但是每片数据必须具有不同的数据格式。如果要保存的数据的格式已经用过了，就保存这个新数据，原来的数据作废。

• 	剪贴板支持图片格式和文本格式。DataObject 通常只支持文本格式。

• 	DataObject 只有当应用程序运行时才存在，剪贴板则是与操作系统同时运行存在。这意味着，可以先将数据放到剪贴板，然后再关闭应用程序，剪贴板上的数据不会丢失。DataObject 就没有这个功能。如果关闭应用程序，这个应用程序放在 DataObject 上的数据就丢失了。

• 	DataObject 是一个标准的 OLE 对象，而剪贴板不是。这意味着，剪贴板支持标准的移动操作（拷贝，剪下，和粘贴），但不支持拖放操作。如果需要应用程序支持拖放操作，就必须使用 DataObject。

提示  可以使用 SetText 方法定义自己的数据格式名称，将数据移动到剪贴板或 DataObject 上。.这样便于区分是应用程序移动的文本还是用户移动的文本。


显示或隐藏工具箱

在“视图”菜单，确定在“工具箱”的前面是否显示一个复选标记。如果存在复选标记，显示工具箱。否则，隐藏工具箱。

选作下列中的一个：

• 	为了显示工具箱，一定要保证在“工具箱”的前面显示一个复选标记。否则，选择“工具箱”。

• 	为了隐藏工具箱，一定要保证在“工具箱”的前面没有显示复选标记。否则，选择去掉“工具箱”。


什么是工具箱？

工具箱标识不同的控件，这些控件可以添加到窗体 Frame，或 Page 中。

可以使用很多方法定制工具箱，如下：

• 	往工具箱中添加页面。

• 	将控件从一页面移动到另一页面。

• 	为页面改名。

• 	往工具箱中添加其他控件，也包括 ActiveX 控件。

• 	从窗体往工具箱中拷贝定制的控件。

• 	例如，“确定” 和“取消” 按钮是 CommandButton 的两个特例。如果往工具箱添加“确定” 和 “取消”模板，可以将它们很快添加到别的窗体中。


往工具箱添加定制控件

1.	在窗体中放置一个控件，并且对它进行定制。

例如，创建一个“确定”按钮，在窗体中放置一个 CommandButton，设置它的 Caption 属性为 OK，设置它的 Default 属性为 True。

2.	选择定制控件。

3.	将控件拖到工具箱中。

注意   当往工具箱中拖控件时，只传送属性的值。为那个控件编写的任何代码不同控件一起传送。必须为那个图标编写新的代码，或将代码从窗体的控件往工具箱的控件拷贝。


往窗体添加控件

使用下列任何方法，从工具箱往窗体添加控件。也可以使用这些方法将控件插到窗体的 Frame ，TabStrip，或 MultiPage 中。

• 	单击工具箱中的一个控件，然后在窗体单击。控件以默认的大小显示。可以拖住这个控件改变它的大小。

• 	可以将控件从工具箱拖到窗体。控件以默认的大小显示。

• 	双击工具箱中的这个控件，然后每创建一个控件，在窗体单击一次。例如，为了建立四个命令按钮。双击工具箱中的 CommandButton，然后在窗体单击四次。


往工具箱添加控件

1.	在工具箱中的任意控件图标上单击右键，或在工具箱中任意页面的空区域上单击右键。

2.	从快捷菜单上选择“附加控件”。

3.	从“可用控件”列表选择新的控件。

4.	单击“确定”。


从工具箱删除项目

1.	在工具箱要删除项目的图标上单击右键。

2.	从快捷菜单选择“删除”。该命令包含在所选控件的名称中。

注意   如想删除控件，可从快捷菜单使用“附加控件”，并且将所有要删除的控件的复选框清空。


自定义工具箱的图标

1.	在工具箱中的图标上单击右键。

2.	从快捷菜单选择“自定义”。

3.	选作下列中的一个：

• 	为了改变工具提示，输入工具提示的新文本。

• 	为了编辑图标选取“编辑图片”。然后选取想要的颜色，以及选取使用该颜色的图象的像素。

• 	为了指定新的位图选取“加载图片”。然后标识含有那个位图的文件，那个位图将作为图标。如果要加载的图片比图标大，产生一个错误。


什么是工具提示？

工具提示是一个简短的描述，通常只是几个单词，当鼠标指针片刻固定在一个控件上，或是其它的用户接口部分，而不按击时，就会出现工具提示。控件和工具箱的工具提示可以自定义。

一个从窗体拷贝到工具箱来的新控件，工具提示的默认值是由“新建”及控件类型合成的。例如，一个定制的 CommandButton （比如是“确定”） ，它默认的工具提示是“新的 CommandButton”。如果控件没有关联的工具提示，默认值就是 “未知的”。

注意   工具提示就是信息，它由 Microsoft 窗体在设计方式时提供给窗体开发人员。每个控件都有 ControlTipText 属性，允许窗体的开发人员当应用程序运行时，给最终用户产生“工具提示”。


在工具箱中定制工具提示

1.	在工具箱中选择某个控件。

2.	单击右键。

3.	从快捷菜单选择“自定义”。该定制命令包括有控件的名称，如“自定义 Label” 。

4.	输入工具提示的新文本。

5.	单击“确定”。


为工具箱页面设置工具提示

1.	在工具箱中选择页面。

2.	单击右键。

3.	从快捷菜单选择“重命名”。

4.	输入工具提示的新文本。

5.	单击“确定”。


改变工具箱页面的名称

1.	在想改名的工具箱页面的标签上单击右键。

2.	从快捷菜单选择“重命名”。

3.	在“标题”字段，输入想用的名称。

4.	单击“确定”。


改变工具箱页面的顺序

1.	在工具箱任意页面的标签上单击右键。

2.	从快捷菜单选择“移动”。

3.	选择想移动的页面的名称。

4.	选取“向上移动”或“向下移动”， 直到页面在页面列表的适当位置。

5.	单击“确定”。


创建新的工具箱页面

1.	在工具箱任意页面的标签上单击右键，新的页面将插在这个页面的后面。

2.	选取“新建页”。


删除工具箱页面

1.	在想删除的工具箱页面的标签上单击右键。

2.	选取“删除页”。这个页面所有的控件也被同时删除。


导入或导出工具箱页面

1.	在工具箱任意页面的标签上单击右键。如果是导入页面，新的页面将插在这个页面的后面。

2.	选作下列中的一个：

• 	为了导入页面，选取“导入页”。然后选择要导入的页面文件的名称 。

• 	为了导出页面，选取“导出页”。然后输入文件名称保存工具箱页面的备份。导出页面不从工具箱中删除。

3	单击“确定”。


将项目移到另一个工具箱页面

1.	在工具箱任意页面选择一个控件。

2.	将控件拖到新页面的标签上。鼠标指针固定在这个标签上，直到在工具箱的前面显示那个页面。

3.	将控件拖到页面的主区域。

注意   如果要放置控件的页面是不可视的，可以增加工具箱的宽度，以便显示所有页面的标签，然后将控件拖到相应的页面。


改变工具箱的大小

1.	将鼠标指针移到工具箱的边角。指针变为双尾箭头。

2.	当双尾箭头出现时，拖住工具箱改变它的大小。


为控件指定一个定制帮助主题

这个过程假定已经建立了一个自定义帮助文件，并且已与工程相关联。将帮助文件与工程建立关联的过程由工程环境决定。

1.	选择一个已经写好自定义帮助文件的控件。

2.	在“属性”窗口，选择 HelpContextID 属性。

3.	输入自定义帮助文件中 相应主题的上下文 ID 。


自定义帮助文件

作为应用程序的开发人员，应该使用自定义帮助文件，提供如何使用该窗体应用程序的信息。

为了创建自定义帮助文件，可使用创建 Windows 帮助文件的产品或工具。

可以将自定义帮助文件中的特定主题与应用程序中的每个控件建立关联。当这个应用程序运行时，最终用户可以通过选择控件及按 F1 键查看那个帮助主题。


指定加速键

1.	在设计方式，选择窗体中的某个控件。

2.	在“属性”窗口，选择 Accelerator 属性。

3.	输入一个单个字符作为 Accelerator 的值。

提示   选用该控件的主题中的一个字符。注意该控件主题中，选定的那个字符会有下划线。


为 Page 或 Tab 指定加速键

1.	在设计方式，选择一个单独的 Page 或 Tab。一定要确保选择的是 Page 或 Tab，而不是有关联的 MultiPage 或 TabStrip。当选定一个 Page 或 Tab 后，围绕这个 Page 或 Tab 的主题出现一个矩形。

2.	在选定的 Page 或 Tab 上单击右键。

3.	从快捷菜单选取“重命名”。

4.	在“重命名”对话框，输入一个在 Accelerator Key 字段中的字符。

提示   选用该控件的主题中的一个字符。注意该控件主题中，选定的那个字符会有下划线。


为 Page 或 Tab 指定控件提示

1.	在设计方式，选择一个单独的 Page 或 Tab。

一定要确保选择的是 Page 或 Tab，而不是有对应的 MultiPage 或 TabStrip。当选定一个 Page 或 Tab 后，围绕它的主题出现一个矩形。

2.	在选定的 Page 或 Tab 上单击右键。

3.	从快捷菜单选取“重命名”。

4.	在 ControlTipText 字段，输入一个字符串作为控件提示。

5.	单击“确定”。

提示   为了给 MultiPage 或 TabStrip 指定控件提示，可使用 ControlTipText 属性。


为控件指定控件提示

1.	选择某个控件。

2.	在“属性”窗口选择 ControlTipText 属性。

也可以通过编码设置 ControlTipText 的值。

3.	输入字符串作为控件提示。

提示   为了给 Page 或 Tab 指定控件提示，可使用 Page 或 Tab 的快捷菜单中的“重命名”命令。


什么是控件提示？

控件提示是描述控件的一个简洁短句，Page，或是 Tab。 当鼠标指针片刻固定在一个控件上，而不按击时，就会出现控件提示。控件提示和工具提示非常相似。不同之处是，Microsoft 窗体为开发人员在设计时提供工具提示，开发人员为最终用户在运行时提供控件提示。

如果为 MultiPage 或 TabStrip 指定了控件提示，那么在 MultiPage 或 TabStrip 中的单独的  Page 或 Tab 对象的控件提示就不显示了。


指定标题

为了给 CheckBox, CommandButton, Frame, Label, OptionButton, 或 ToggleButton 指定标题：:

1.	显示控件的“属性”窗口。

2.	选择 Caption 属性。

3.	输入想作为标题的文本。

为了给 Page 或 Tab 指定标题：

1.	选择含有 Page 或 Tab 的 MultiPage 或 TabStrip。

2.	选择单独的 Page 或 Tab 。

当选定这个 Page 或 Tab 后，围绕它的主题出现一个矩形。

3.	在选定的 MultiPage 或 TabStrip 上单击右键。

4.	从快捷菜单选取“重命名”。

5.	在“标题”字段，输入想作为标题的文本。

6.	单击“确定”。


什么是标题？

标题是一个说明性的文本，该文本或直接出现在控件上，或出现在控件的周围。下列控件可以有标题： CheckBox, CommandButton, Frame, Label, OptionButton, 和 ToggleButton。 作为 MultiPage 和 TabStrip 其中一部分的  Page 和 Tab 对象，也有标题。


使用“Tab 键顺序”对话框设置 tab 的顺序

1.	确保没有选择任何控件。

2.	在窗体上单击右键，注意不要点到控件上。

3.	从快捷菜单选取“Tab 键顺序”。

4.	选择想按 tab 键顺序重定位的控件的名称。

5.	选取“向上移动”或“向下移动”。直到控件名处于适当的 tab 顺序位置。


使用 TabIndex 属性设置 tab 的顺序

1.	标识用于窗体的 tab 键顺序。

在 tab 顺序中第一个控件的 tab 索引是 0 ；第二个 tab 索引是 1 ；依次类推。

2.	选择 tab 键顺序的一个控件。

3.	在“属性”窗口选择 TabIndex 属性。

4.	输入相应的数字，标识该控件在 tab 顺序的位置。


改变 MultiPage 或 TabStrip 中页面的顺序

1.	在 MultiPage 或 TabStrip 中选择任意页面。

2.	在该页面的标题处单击右键。

3.	从快捷菜单选取“移动”。

4.	在“移动”对话框，选择要移动的 Page 。

5.	选取“向上移动”或“向下移动”，改变页面的位置。

6.	当完成所有的想要的改变后，单击“确定”。

注意   也可以在“属性”窗口，使用 Index 属性改变页面的顺序。第一个页面的索引是 0；第二个页面的索引是 1；依次类推。


改变窗体的大小

在设计时：

• 	拖住窗体的变尺寸控点，直到窗体成为需要的大小。

在运行时：

• 	将窗体的 Height 和 Width 属性设置为适当的值。


改变窗体的位置

在用户接口：

• 	拖住标题栏，直到窗体到希望的位置。

在设计时：

• 	将窗体的 Left 和 Top 属性设置为适当的值。 也可以通过“属性”窗口，或通过编码，设置这些属性。


保护相关信息的几种方法

很多应用程序使用一些数据，这些数据只对某些用户是可用的。在使用 Microsoft 窗体中的保护相关信息时，有如下建议：

• 	编写代码使得控件（及其数据）对未授权的用户是不可见的。Visible 属性使一个控件可见或不可见。 关于 Visible 的详细内容，单击 [image] 。

• 	编写代码当未授权的用户运行这个应用程序时，将控件的前景和背景设置为相同颜色。便可使未授权的用户无法看到这些信息。ForeColor 和 BackColor 属性确定前景色 和背景色.。关于 ForeColor 的详细内容，单击 [image] 。关于 BackColor 的详细内容，单击 [image] 。

• 	当未授权的用户运行这个应用程序时，使控件无效。Enabled 属性确定什么时候控件无效。关于 Enabled 的详细内容，单击 [image] 。

• 	访问这个应用程序或一个特定控件时，需要口令。可以使用保留区作为用户类型的每个字符。PasswordChar 属性定义保留区字符。关于 PasswordChar 的详细内容，单击 [image] 。

注意   使用上述的口令或其它技术可以提高应用程序的安全性，但并不担保能阻止未授权的数据访问。


使控件按照数据自动调整大小

在“属性”窗口，将 AutoSize 属性设为 True。


改变控件外观的几种方法

Microsoft 窗体含有几个属性，可用来定义应用程序中控件的外观：

• 	ForeColor

• 	BackColor, BackStyle

• 	BorderColor, BorderStyle

• 	SpecialEffect

ForeColor 确定前景色。前景色可用于任意与控件关联的文本，如，标题或控件的目录。

BackColor 和 BackStyle 用于控件的背景。背景是控件边界内的区域，而不是控件的边框，如，环绕控件中文本的区域。BackColor 确定背景色。BackStyle 确定背景是否是透明。如果应用程序设计将一个图片作为主要背景，当想看控件处的图片时，可将控件背景置为透明的。

BorderColor, BorderStyle, 和 SpecialEffect 用于控件的边框。可以使用BorderStyle 或 SpecialEffect 选取边框的类型。这两个属性不能同时使用。当为其中一个指定一个值时，系统将其它属性设置为 None。 SpecialEffect 允许在几种边框样式中选取一种，但这种边框只能使用系统颜色。 BorderStyle 只支持一种边框样式，但允许选取由 BorderColor 有效设置的任意颜色。BorderColor 指定控件边框的颜色，但该颜色只有使用 BorderStyle 创建边框时才有效。


Image 控件中可为图片作的事情

Image 控件本身不是一个图片，而是包含了一个图片，该图片保存在一个独立的文件中。不能用 Image 属性编辑图片，可以使用 Image 属性指定图片出现在 Image 中的方法。

Image 的一个有意义的应用是，可以用其作为应用程序的背景图片。为此，先将 Image 的大小设成与窗体的大小一样。然后再将其它控件放置到该背景的上面。


对齐控件中的文本

1.	在“属性”窗口选取 TextAlign 属性。

2.	单击那个属性值后面的下拉箭头，显示一个可供选择的列表。

3.	选取下面之中的一个：

• 	“左对齐”－将文本与控件的左边对齐。

• 	“右对齐”－将文本与控件的左边对齐。

• 	“居中对齐”－将文本按照控件长度居中对齐。

当 ComboBox, Label, 和 TextBox 时，TextAlign 是可用的。


显示或隐藏网格

1.	从“工具”菜单选取“选项”。

2.	选择“通用”标签工作表。

3.	选作下列中的一个：

• 	为了显示网格，检查“显示网格”框。

• 	为了隐藏网格，清“显示网格”框。

4	单击“确定”。


按网格调整大小

1.	选取某个控件。

2.	从“格式”菜单选取“按网格调整大小”。

Microsoft 窗体调整所选控件的大小，使其每个角都与一个网格点对齐。


调整至适当大小

1.	选择某个控件。

2.	从“格式”菜单选取“调整至适当大小”。

Microsoft 窗体设置控件的大小，使其大到可以显示它的图片及指定给 Caption 或 Text 属性的所有文本。


按相同大小制作

1.	选择所有需要同样大小的控件。

2.	选择主控件。

3.	从“格式”菜单选取“按相同大小制作”。

4.	从层叠菜单，选取下列之一：

• 	“宽度相同”－使所有选择的控件与主控件的宽度一样。

• 	“高度相同”－使所有选择的控件与主控件的高度一样。

• 	“两者都相同”－使所有选择的控件与主控件的宽度和高度都一样。


控件对齐

1.	选择所有需要对齐的控件。

2.	选择主控件。

3.	从“格式”菜单选取“对齐”。

4.	从层叠菜单，选取下列之一，将每个所选控件的指定部分与主控件的对齐：

• 	“左对齐”－左对齐。

• 	“居中对齐”－每个控件中心对齐。这意味着， 画在主控件中心的垂直线将通过每个所选控件的中心。

• 	“左对齐”－右对齐。

• 	“顶端对齐”－顶对齐。

• 	“中间对齐”－与每个控件的中心对齐。这意味着， 画在主控件中心的水平线将通过所选控件的中心。

• 	“底端对齐”－底对齐。

• 	“对齐到网格”－将每个所选控件的左上角与最近的网格点对齐。注意这个选项不是以主控件的位置为准的。

注意   菜单中的每个命令都有一个小图片，说明控件将如何对齐。


调整控件之间水平和垂直间隔

1.	选择所有需要调整间隔的控件。

2.	从“格式”菜单选取“水平间距”或“垂直间距”。

3.	从层叠菜单，选取下列之一：

• 	“相等”－使控件之间的水平和垂直间隔大小一样。水平和垂直间隔的大小，将随着显示控件的有效区域及所有控件的宽度而变化。

• 	“递增”－将控件之间的间隔增大一个网格块。

• 	“递减”－将控件之间的间隔减小一个网格块。

• 	“删除”－删除控件之间的间隔。控件并不重叠，而是相互交界。


安排按钮

1.	选择所有需要安排的 CommandButton 控件。

2.	从“格式”菜单选取“调整按钮”。

3.	从层叠菜单，选取下列之一：

• 	“底端对齐”－从窗体的左下角开始，逐行排列，所有按钮底边对齐。.

• 	“右对齐”－从窗体的右上角开始，逐列排列，所有按钮右边对齐。

安排好按钮之后，使用“格式”菜单中的“水平间距”或“垂直间距”调整按钮之间的间隔。

提示   先选择一个小网格的大小，再选取这个命令，将按钮的位置指定到靠近窗体的底边或右边。按钮就位后，改变网格大小不会改变按钮的位置。


窗体内的控件居中

1.	选择所有需要居中的控件或群组。

2.	从“格式”菜单选取“在窗体中居中对齐”。

3.	从层叠菜单，选取下列之一：

• 	“水平平铺”

• 	“垂直平铺”


为控件群组所能作的事情
为控件群所能作的事情

一个群组就是将两个或两个以上窗体中的控件，作为单个单元。一个群组可包含窗体中的任意控件。一旦控件属于一个群组，那么既可以对整个群组操作，又可以选择单个对象进行操作。

Microsoft 窗体提供很多群组或群组中控件的操作。选择一个群组后，可作下列任何操作：

• 	同时调整群组中所有控件的大小。有关详细内容，单击 [image] 。

• 	拆开群组，使得每个控件都与其它控件无关。有关详细内容，单击 [image] 。

• 	显示群组的快捷菜单，该菜单提供有关群组的快速访问命令。有关详细内容，单击 [image] 。

• 	不拆开群组，选择群组内的单个控件，改变该控件的属性设置，而不影响群组中的其它控件。有关详细内容，单击 [image] 。


Microsoft 窗体的透明性

Microsoft 窗体在两个方面支持透明性：某些控件的背景和用于某些控件的位图。

BackStyle 的属性决定一个控件是否透明. 透明的控件允许您观察隐藏在窗体后的内容。如果您有一个在窗体中经过修饰的的背景，并且您想最小量化隐藏在该控件后面的背景，这是很有用的。有关使一个控件透明的更详细的信息，可单击 [image].

您可以在 Microsoft 的窗体的几个控件中显示一个位图。有些控件支持透明的位图，也就是说包括一种或几种背景色的位图是透明的。位图的透明性是不由控件的任何属性所控制的；它是由图象的左下角象素的颜色所控制的。 Microsoft 窗体并不提供编辑位图并使其透明的方法；为此目的您必须使用图象编辑器。

在 Microsoft 的窗体中，位图在下列控件中总是透明的。

• 	CheckBox

• 	CommandButton

• 	Label

• 	OptionButton

• 	ToggleButton

透明的图片有时会出现模糊现象。如果您不希望出现此现象，可在支持不透明图象的控件中显示该图片。

如果您在不支持透明位图的控件中使用一个透明的位图，该位图也能正确显示出来，但您不能观察到隐藏在其后的内容。在 Microsoft 窗体中，以下控体不支持透明的位图：

• 	UserForm

• 	Frame

• 	Image

• 	MultiPage


什么是快捷方式菜单?

快捷菜单是当您右单击一个对象时出现的菜单。在 Microsoft 窗体中，下列对象具有快捷菜单。

• 	工具箱，工具箱中的每页，工具箱中一页的每一项目。

• 	在窗体中的单个控件。

• 	控件组（由“成组”命令创建的组)。

� 	容器 (诸如 UserForm )。

• 	在一个 MultiPage 中的每个 Page 对象。

• 	在 TabStrip 中的每个 Tab 对象。

• 	不在一个组中的多个控件，

快捷方式菜单中的命令根据您所选择的对象变化。例如，如果您选择了不在一组中的多个控件，此快捷方式菜单将包含“成组”命令；但不包含工具箱。

为了显示一个控件或容器的快捷方式菜单，必须右单击该对象。

有关显示一个 MultiPage 或 Page 快捷方式菜单的更详细信息，请单击 [image].

有关显示一个 TabStrip 或 Tab 快捷方式菜单的更详细信息，请单击 [image].


在 Listbox 或 ComboBox 列表中设置数据的方法

在一个单列 ListBox 或 ComboBox 中， AddItem 方式提供了一种增加单个输入至该列表的有效方法。在一个多列 ListBox 或 ComboBox 中， List 和 Column 属性提供了另一种技术，您可以从二维数组 加载至该列表。


使用多列 ListBox 或 ComboBox 您所能做的事情

为了控制多列 ListBox 或 ComboBox 的宽度，您可以在 ColumnWidths 属性中，以点数指定全部列的宽度。对于列宽指定为 0 的列，显示时将隐藏此列信息。

如果您想隐藏来自用户的 ListBox 或 ComboBox 全部而不是一列信息，可以使用 TextColumn 属性指定需显示信息的列。

类似地，当用户通过在 BoundColumn 属性中指定列数而作出选择时中，您可以控制数值的哪一列用于控件。


使用列表或列属性增加项目至列表

1.	建立一个多列 ListBox 或 ComboBox。

2.	建立一个包含您所要放置至该列表项目的二维数组。

3.	设置 ListBox 或 ComboBox 的 ColumnCount 属性，以与此列表的输入数相匹配。

4.	操作下列步骤之一：

• 	赋值数组作为 List 属性值。 ListBox 的内容将与此数组的内容准确匹配。

• 	赋值该数组作为 Column 属性值。 Column 转换行和列，这样 ListBox 的每行与该数组的对应列相匹配。


显示或隐藏工具提示

1.	从“工具”菜单选择“选项”

2.	在“tab 工作表”选择“通用”。

3.	操作以下步骤之一：

• 	为了显示工具提示，复选“显示工具提示”框。

• 	为了隐藏工具提示，清除“显示工具提示”框。


Microsoft 窗体的对象模型

Microsoft 窗体对象模型包括以下对象形式：

• 	控件

� 	集合

• 	集合中的对象

Microsoft 窗体对象模型的每个元素都具有几种属性，事件和能够用于您想进行的应用任务方法的组合。

Microsoft 窗体具有三种集合：

Controls 集合－包括一个在一个窗体， Frame 或 Page 中的全部控件。

Pages 集合－包括在一个 MultiPage 上的全部 Page 对象。每个 MultiPage 具有其不同的 Pages 集合。

Tabs 集合－包括在一个 TabStrip 中的全部 Tab 对象。每个 TabStrip 具有其不同的 Tabs 集合。


建立选项组的方法

通过默认，在一个容器（例如一个窗体，一个 MultiPage ，或一个 Frame ）中的全部 OptionButton 控件只是一个单个选项组的部分。这就意味着选择了其中一个按钮后，此窗体中的其余选项按钮被自动设置为 False 。

如果在此窗体中您需要多个选项组，有两种方法可供您用于建立增加的组：

• 	使用 GroupName 属性指定相关按钮。

• 	在窗体中的 Frame 放置相关的按钮。

我们建议您使用第一种方法而不要使用第二种方法，因为它减少了在应用程序中对控件数的要求。这样也减少了应用程序对磁盘空间的要求，从而可以改善您的应用程序性能。

注意   TabStrip 不是一个容器。在 TabStrip 中的选项按钮包含在窗体选项组中。您可以使用 GroupName 来建立一个来自 TabStrip 按钮的选项组。


使用组名属性建立选项组

1.	将全部所需 OptionButton 控件放置在窗体中。注意，在 MultiPage 或 Frame 上的选项按钮将自动形成一个选项组。

2.	对每个您想建立的组指定其按钮。

3.	给每个控件的 Name 属性输入一个数值。

4.	将组内的每个按钮的 GroupName 属性设置成相同数值。


在列表中匹配输入的方法

Microsoft 窗体提供三种与由用户采用在 ListBox 或 ComboBox 的列表中现有的输入相匹配的方法：

• 	“不匹配”－对用户所键入该列表的输入不提供任何匹配帮助。

• 	“首字母匹配”－将最新键入的字母与该列表每个输入的第一字母进行比较，在列表中第一个相匹配的被选中。

• 	“完全匹配”－比较用户的输入并力图从列表中寻找出一个准确匹配的输入。

匹配特征在两秒钟后被复位（对运东版本是六秒）。例如，如果您有一个 50 个州的列表，并且您快速键入“CO”，您将“Colorado”，但是如果您慢速键入“CO”，您将查找到“Ohio”，因为在输入字母的过程中“自动全部查找”已被复位。

如果您选择“完全匹配”的匹配方式，首先对列表项目按字母排序是个好主意（您也可以使用 TextColumn 属性完成此目的）。如果该列表未按字母排序，匹配将不能正确进行。例如，如果列表中包含 Alabama ， Louisiana 和 Alaska 这样的顺序，如果用户键入“ala”，“Alabama”将被认为是一个完全匹配。事实上这个结果是不准确的，因为在该列表中有两个由用户输入的项目都可能匹配。因此按字母排序就可以消除这种不准确性。


使用 z-顺序安置控件

放置一个控件在 z-顺序 的前面或后面：

1.	选择您要复位的控件。

2.	从“格式”菜单选择“顺序”。

3.	从层叠菜单选择“置为顶层”或“置为底层”。

按 z-顺序调整控件的一个位置：

1.	选择您要复位的控件。

2.	从“格式”菜单选择“顺序”。

3.	从层叠菜单选择“置前” 或“置后”。

注意   您不能撤消或重复安置命令，诸如“置为底层”或“置为顶层”。例如，如果您选择了一个对象并且在快捷方式菜单中单击了“置后”，您将不能再撤消或重复此操作。

“置为底层”，“置前”，“置为顶层”，和“置后”菜单选择项使您可以改变一个控件相对于其他控件的 z-顺序。如果该窗体包含 ListBox , Frame, 或 MultiPage 控件，这些控件将自动移动至尽可能靠近堆栈顶部位置。例如，对 ListBox , Frame, 或 MultiPage 运用“置后”命令时，将仅移动该控件至其他 ListBox , Frame 或 MultiPage 控件的下面，但不会在此堆栈中其他形式的控件下面。类似地，对一个控件而不是 ListBox , Frame, 或 MultiPage 运用“置前”命令时，将移动该控件至最靠近堆栈顶部的位置，但不会移动该控件至此堆栈中任何 ListBox , Frame 或 MultiPage 的上面。

显然，这就意味着如果 ListBox , Frame, 或 MultiPage 和其他任何 Microsoft 窗体控件处于一个窗体的相同位置， ListBox , Frame ,或 MultiPage 将总是出现在其他控件的顶部。如果 ListBox , Frame, 或 MultiPage 与另一个 ListBox , Frame, 或 MultiPage, 处在同一位置，将由该控体的 z-顺序确定哪个控件出现在另一控件的上面。


建立一个透明的控件

1.	放置基本控件至该窗体。

2.	观察控体的属性。

3.	将 BackStyle 属性设置成“透明的”。

4.	如果控件支持 BorderStyle 属性，将其设置为“无”。

注意   当您使一个控件透明时，其背景颜色不显示出来。因此您可以不管 BackColor 的属性。但是，当一个控件是透明的时，对 BackColor 的设置是不可以改变的。


从一个控件删除位图

在“属性”窗口中：

1.	高亮 Picture 属性值（"bitmap" 字）。

2.	按下“删除”。

或在编码中：

• 	输入下列语句：Object.Picture = LoadPicture("")


给控件赋予一个位图
给控件赋于一个位图

在“属性”窗口：

1.	选择 Picture 属性。

2.	在“图片”对话框输入该图片的名称和位置。

如果该图片比控件大， Microsoft 窗体缩放该图片，使其与控件吻合，不管您是否通过“属性”窗口或通过编码赋给图片。PictureAlignment 属性决定在控件中如何对齐图片。


在控件中对齐图片的方法

Picture 属性赋予一个位图或其他图片给控件。当您赋予图片给控件后，您可以操作下述步骤在控件中对齐图片：

• 	使用 PictureAlignment 属性将 Image 中的图片居中或者按照 Image 角分别对齐该图片的对应角。

• 	使用 PictureSizeMode 属性在 Image 中剪裁，伸展或缩放图片。伸展可以扭曲图片，但是缩放不能。

• 	使用 PictureTiling 属性可以在 Image 中显示多重图片拷贝


选择网格尺寸

1.	从“工具”菜单中选择“选项”。

2.	在“选项”对话框选择“通用”页。

3.	在“窗体网格设置值”组指定每个网格块您所需大小。在较小的网格块指定较小的数。

提示   如果您使用“调整按钮”命令在您的应用程序定位命令按钮，应尽量采用较小的网格设置。这样使您将按钮定位至靠近窗体边框。


建立控件组

1.	在窗体中选择您要包括在该组内的每个控件。

2.	从“格式”菜单选择“成组”。


缩放组内全部控件

1.	选择一个组。

包围该组的一个具有缩放把柄的矩形表明该组被选中。

2.	单击任一缩放把柄并且拖曳它以改变矩形的大小。

3.	释放鼠标按钮。

每个控件的大小将按照包围该组的矩形的改变方法而按比例地改变。


解散控件组

1.	选择一个组

2.	从“格式”菜单选择“解散组”。


显示组快捷方式菜单

1.	选择一个组。

2.	右单击包围该组的矩形内的任意位置。

提示   在该组任意位置单击键，但不可在快捷方式菜单中，如果您不想使用菜单中的命令，可以移走快捷菜单。


在组内选择控件

1.	选择该组。

2.	在该组内选择一单个控件。包围该组的缩放把柄将增亮，同时在被选择的控件中出现暗色把炳。

您可以改变所选控件的属性值。您所做的任何改变将仅影响被选择控件。

3.	当您结束对所选择控件的工作后，单击组内除被选择控件外的任意位置。该组仍然继续被选择。

您可以选择组内另一个控件或者继续您需要完成的任务。


显示多页或单页快捷方式菜单

1.	确认窗体未运行。

2.	执行以下步骤之一：

• 	为了显示单 Page 快捷方式菜单，右单击相应页的标题。

• 	为了显示 MultiPage 快捷方式菜单，右单击控件中的任意位置，但不要在控件中的 Page 标题上。


显示标签条或标签的快捷方式菜单

1.	确认该窗体未运行。

2.	执行下列步骤之一：

• 	为了显示各单个 Tab 的快捷方式菜单，选择相应的 tab 。

• 	当该 tab 被选中后，一个虚线的矩形出现在它标题的四周。

右单击被选中的标题。

• 	为了显示 TabStrip 的快捷菜单，右单击控件中的任意位置，但不可以在该控件的任何 Tab 标题中。


激活控件和选择控件

所有控件都具有激活状态和被选择状态。当一个控件被激活时，它意味着您正在使用该控件的内容；当一个控件被选择时，它意味着您正在使用控件本身。

当您放置控件至窗体中时，大多数控件自动被选择。在设计方式下，当控件被选择时缩放把柄出现在控件的边框周围。如果您已撤消对该控件的选择，您可以通过再次单击控件而重新选择它。

单击一个被选择控件使其进入激活状态。在此状态下，您可以直接编辑控件的标题。

在被选择和激活两种状态下，您可以使用 DEL, CTRL+X, 和 CTRL+C 作为对应 Delete, Cut, 和 Copy 的快捷方式键命令。在被选择状态下，这些命令可以用于快捷菜单，并且对控件本身有效。在激活状态下，这些命令将对在控件中被选择的文本有效；如果没有文本被选择，这些命令无效。这些命令不可以用于激活控件的快捷方式菜单。


对于选择多个控件的提示

您可以采用三种方法选择多个控件：:

• 	SHIFT+CLICK：Microsoft 窗体在被选择的控件周围建立一个不可见的选择矩形并且在矩形中的所有控件中设置缩放把柄。

• 	CTRL+CLICK：缩放把柄仅出现在被选择的控件中，而不会在包围矩形的其他控件中。偶尔情况下，这种方式也可以用来选择靠近或邻近所选择控件。在这种情况下，使用“选取对象”指针，解释如下。

• 	工具箱中的“选取对象”指针画一个矩形复盖您所选择的控件。所有落在其中或仅仅接触到的矩形均被选中。

当选择多个控件时，选中的控件之一将成为对其他选中控件的引用，将其称之为主控件。


设置主控件的技巧

当选中多个控件时，可以按下列步骤之一设置主控件：

• 	SHIFT+CLICK：主控件是用 SHIFT+CLICK 选中的控件中的第一个控件。

• 	CTRL+CLICK：主控件是用 CTRL+CLICK 选中的控件中的最后一个控件。

• 	在工具箱中“选择对象”指针：当开始在想选取的控件上画出矩形时，主控件就是离鼠标指针最近的控件。

如果在选中的控件上 CTRL+CLICK 两次，该控件将成为主控件。


Microsoft 窗体的撤消和重复

Microsoft 窗体支持多级“撤消”和“重复”命令。这就意味着您可以撤消一系列操作，而不仅只是单个操作。

CTRL+Z 是“撤消”的快捷键，CTRL+Y 是“重复”的快捷键。

您不能撤消或重复安置命令，诸如“置为底层”或“置为顶层”，例如，如果您选择了一个对象并且在快捷菜单中单击“向后移动”，您将不能再撤消或重复此操作。


Microsoft 窗体的 ByVal 相关

Microsoft 窗体中的 ByVal 关键字表明参数作为一个数值而通过；这是 Visual Basic 中 ByVal 的标准含义。但是，在 Microsoft 窗体中您可以采用 ReturnBoolean, ReturnEffect, ReturnInteger, 或 ReturnString 对象而使用 ByVal。当您如此执行时，通过的数值不是简单的数据形式；而是一个指向对象的指针。

当您采用这些对象使用时，ByVal 相关至该对象而不是通过的参数方式。上列每个对象具有您可以设置的 Value 属性。您还可以传送此数值至一个函数的输入和输出。由于您能够改变此对象成员的值，即使该事件语法说明此参数是 ByVal，事件产生的结果仍与 ByRef 特性一致。

赋值给与 ReturnBoolean，ReturnEffect，ReturnInteger 或 ReturnString 相关的参数与给任何其他别的参数赋值没有什么两样。例如，如果事件语法指明一个用于 ReturnBoolean 对象的 Cancel 参数， 语句 Cancel=True 仍然是合法的， 就像用于其他数据类型一样。


重新命名对话框

每个页面或具有焦点的 tab 都包含 Accelerator ， Caption 和 ControlTipText 属性设置。当前工具箱页面都包含 Caption 和 ToolTipText 属性设置。您可以更新这些属性值。

加速键是用户同时按下键盘键和 ALT 键，以设置对 Page 或 Tab 的焦点。标题是 Page 或 Tab 或当前工具箱页的 tab 区文本。ControlTipText 是当用户保持鼠标指针在当前工具箱页的上面而未单击时，所出现控件的简要描述。

给 Page 或 Tab 设置一个加速键：

• 	给 Accelerator 输入一个单个字符。

给 Page 或 Tab 重新命名：

• 	给 Caption 输入一个新值。

为 Page 或 Tab 定义控件提示文本：

• 	给 ControlTipText 输入新值。

定义当前工具箱页工具提示文本：

• 	给 ToolTipText 输入新值。

注意   单击“确定”以申请新值给页面，tab，或工具箱页面。


页顺序/标签顺序对话框

改变页面或标签的位置：

1.	选择您想移动的 Page 或 Tab 名。

2.	选择“向上移动”或“向下移动”直至选择项目移至所需位置。

3.	当全部项目符合您要求的顺序后，单击“确定”。


附加控件对话框

1.	在“可用控件”列表中选择该控件或您想增加至工具箱的控件。

2.	单击“确定”。

提示   您可以通过选择在“显示”组的选项筛选“可用控件”列表。


自定义控件对话框

在工具箱中包含 ControlTipText 属性和代表这个控件的图标。采用这个对话框您可以定义或改变与这个控件有关的 ControlTipText ，同时可以改变在工具箱中显示的图标。

定义或编辑 ControlTipText ：

• 	给 ControlTipText 输入一个新值。

编辑图标：

1.	选择“编辑图片 CommandButton”。

2.	使用“图象编辑器”转换所需要的图标。

加载另一个图标：

1.	选择“加载图片 CommandButton”。

2.	从命令对话框选择一个图片文件。

3.	单击“确定”，从而赋予其新值。