shockwaveflash插件崩溃-0xc000025

vb下载
2023年4月2日发(作者:枚举)

vb属性、方法和事件概述

VisualBasic

VisualBasic的窗体和控件是具有自己的属性、方法和事件的对象。可以把

属性看

作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。日常生

活中的对象,

如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些

性质,如它的

直径和颜色。其它一些属性描述气球的状态(充气的或未充气的)或不可见的

性质,如它的

寿命。通过定义,所有气球都具有这些属性;这些属性也会因气球的不同而不

同。

气球还具有本身所固有的方法和动作。如:充气方法(用氦气充满气球的动

作),

放气方法(排出气球中的气体)和上升方法(放手让气球飞走)。所有的气球

都具备这些能

力。

气球还有预定义的对某些外部事件的响应。例如,气球对刺破它的事件响应是

放气,

对放手事件的响应是升空。

如果能对气球编程的话,VisualBasic代码将如下所示。其作用是设置气球

的属性:

=Red

er=10

ed=True

注意代码的语法,首先是对象(Balloon),接着是属性(Color),然后是赋值

(Red)。

重复这条语句,但是,换一个不同的值,就可以改变气球的颜色。属性也可以

在程序设计阶

段在“属性”窗口中设置。

调用气球的方法是这样的:

e

e

5

它的语法与属性的语法相似,对象(一个名词)后面紧跟着方法(一个动

词)。在

第三个例子中有一个附加项,称为一个参数,表示气球上升的高度。一些方法

有一个或多个

参数,它们对执行的动作做进一步的描述。

气球对一个事件的响应如下所示:

SubBalloon_Puncture()

e

ise"Bang"

ed=False

er=1

EndSub

本例中代码描述了当刺穿事件发生时气球的行为:调用Deflate方法,然后

以"Bang"(发出的声响)为参数调用MakeNoise方法。因为气球已不再是充气状

态,所以把Inflated属性置为False,并给Diameter属性设置一个新值。

实际上对气球不能编程,但是,可以对VisualBasic的窗体或控件进行编

程。作为

程序员,由您作主。您决定应更改哪些属性,调用哪些方法,对哪些事件作出

响应,从而得

到希望的外观和行为。

窗体对象是VisualBasic应用程序的基本构造模块,是运行应用程序时与用

户交互

操作的实际窗口。窗体有自己的属性、事件和方法用于控制其外观和行为。

设计窗体的第一步是设置它的属性。这可以在设计时在“属性”窗口中完成,

或者运

行时由代码来实现。

设计时,即在VisualBasic环境中创建应用程序的任何时刻,此时你可以操

作窗体和控件,设置它们的属性,对它们的事件编程。运行时是指实际运行应

用程序并与应

用程序进行交互的时间。

设置窗体属性

窗体的许多属性会影响窗体的外观。Caption属性决定窗体标题栏中显示的文

本;

图标属性设置在窗体最小化时显示的图标。MaxButton和MinButton属性决定

窗体是否能

最大化或最小化。通过改变BorderStyle属性,可以控制窗体如何调整大

小。

Height和Width属性决定的窗体初始大小;Left和Top属性根据屏幕的左

上角

确定窗体的位置。WindowState属性可以把窗体设成在启动时最大化、最小化

或正常大小。

Name属性设置窗体的名称,在代码中用这个名称引用该窗体。首次在工程中

添加窗体时,该窗体的名称被缺省为Form1;添加第二个窗体,其名称被缺省为

Form2,以此类推。最好给Name属性设置一个有实际意义的名称,如给一个条目

窗体命名为"frmEntry"。

熟悉这些窗体属性,最好的办法是实践。在“属性”窗口(图3.3)中更改窗

体的一些属性,然后运行该应用程序并观察修改的效果。如果想详细了解每个属

性,可以选择该属

性并按F1键查看联机帮助。

窗体事件和方法

窗体作为对象,能够执行方法并对事件作出响应。

无论是因为用户交互,还是通过代码调整窗体的大小,都会触发一个Resize

事件。当窗体尺寸变化时,允许您在窗体上进行移动控件或调整控件大小等操作。

每当一个窗体变成活动窗体时,就会产生一个Activate事件;当另一个窗体

或应

用程序被激活时,就会产生Deactivate事件。这些事件对初始化或结束窗体

行为十分方便。

例如,在Activate事件中,可以编写代码突出显示一个特定文本框中的文

本;在Deactivate事件中,可以把更改保存到一个文件或数据库中。

要使一个窗体可见,可调用Show方法:

调用Show方法与设置窗体Visible属性为True具有相同的效果。

窗体的许多方法都调用文本或图形。Print、Line、Circle和Refresh方法

可用于直接在窗体表面上写和画。这些方法和更多的方法将在第十二章“使用文

本和图形”中详细讨论。

关于窗体的详细信息,请参阅第六章“创建用户界面”中的“再论窗体”。

使用户与应用程序交互的最简便的方法是给用户提供一个按钮。可以用Visual

Basic提供的CommandButton控件,或利用包含图形的Image控件,如一个图

标,来创建自

己的“按钮”。

使用CommandButton

大多数VisualBasic应用程序都有CommandButton,使用户通过简单的敲击

按钮

来执行操作。当用户选中按钮时,不仅会执行相应操作,还会使该按钮看上去

象被按下并释

放一样。无论何时,只要用户单击按钮,就会调用Click事件过程。将代码

写入Click事件过程,执行想要执行的动作。

在程序执行时,有多种方法可以选中CommandButton:

用鼠标单击按钮。

按TAB键把焦点移到相应按钮上,然后按SPACE键或ENTER键选中该按

钮。参阅本章后面的“焦点概述”。

按CommandButton的快捷键(ALT+下划线的字符)。

在代码中设CommandButton的Value属性为True。=

True

在代码中调用CommandButton的Click事件。cmdClose_Click

如果该CommandButton是窗体的缺省命令按钮,既使将焦点移到其它不是

CommandButton的控件上,按下回车键也会选中该按钮。在设计时,通过设置某按

钮的Default属性为True,指定它为窗体的缺省CommandButton。

如果该CommandButton是窗体的缺省的取消按钮,即使把焦点移到其它控件

上,

也能通过按ESC键选中该按钮。在设计时,通过设置某按钮的Cancel属性

为True,指定它为窗体的缺省的取消按钮。所有这些操作都使VisualBasic调

用Click事件过程。

“测试按钮”应用程序

利用Caption属性可以在按钮上显示文字,告诉用户该按钮的功能。在图3.4

中,在控件示例应用程序的测试按钮范例中包含一个Caption属性为"Change

Signal"的CommandButton(此例的工作为示例应用程序中的

)。

注意,S是这个按钮的快捷键,用一条下划线表示。在Caption属性的正文

内插入一个(&)符号,将使得此符号后面的字符成为该按钮的快捷键(例如,

Change&Signal)。

用户单击CommandButton,将执行该CommandButton的Click事件过程中的

代码。在这个范例中,每次单击按钮,将变换一个不同的交通灯图标。

详细信息关于CommandButton的属性的详细信息,请参阅第七章“使用

VisualBasic的标准控件”。

Label和TextBox控件是用于显示和输入文本的。让应用程序在窗体中显示

文本

时使用Label,允许用户输入文本时用TextBox。Labels中的文本为只读文

本,而TextBox中的文本为可编辑文本。

可由用户编辑的文本,例如一个顺序条目TextBox

字段或一个密码框

只能显示的文本,例如在窗体中标识一个Label

字段或给用户显示指令

Labels和TextBoxes将在以下部分讨论:

用Label显示文本(vbconUsingLabels)使用Label控件的基本知识。

使用TextBox(vbconWorkingWithTextBox)使用TextBox的基本知识。

用Label显示文本

Label控件显示的文本用户不能直接修改。如TextBox和ScrollBar这些没

有自己的Caption属性的控件,可以用Label标识。在Label中实际显示的文

本是由Caption属性控制的,该属性可以在设计时在“属性”窗口中设置或在运

行时用代码赋值。

在缺省情况下,标题是Label控件中唯一的可见部分。但是,如果把

BorderStyle属性设成1(可以在设计时进行),那么Label就有了一个边框,

看起来像一个TextBox。还可以通过设置Label的BackColor、BackStyle、

ForeColor和Font属性来,改变

Label的外观。

改变Label尺寸以适应其内容

设计时可在“属性”窗口中指定单行Label的标题。但是如果要输入一个较

长的

或在运行时可能变化的标题,该怎么办呢?Label提供了两种属性:AutoSize

和WordWrap,用于帮助您改变控件尺寸以适合较长或较短的标题。

AutoSize属性决定控件是否自动改变尺寸以适应其内容。如该属性设为

True,Label就会根据其内容进行水平方向变化,如图3.5所示。

WordWrap属性使Label根据其内容进行垂直方向变化,而保持其宽度不变,

如图

3.6所示。本例的工作版,请参阅应用程序示例中的

如果在中运行AotoSize示例,就会发现为了同时使用

WordWrap,必须两个复选框都选中。这是因为,要想使Label的WordWrap属性

起作用,就必须设置AutoSize为True。只有在一个单字的宽度超过控件的当前

宽度时,Label的宽度才会增加。

关于Label控件属性的详细信息,请参阅第七章“使用VisualBasic的标准

控件”。

使用TextBoxes

TextBox是一种通用控件,可以由用户输入文本或显示文本。除非把TextBox

的Locked属性设为True,否则不能用TextBox显示不希望用户更改的文本。

TextBox中显示的实际文本是受Text属性控制的。Text属性可以用三种方

式设置:设计时在“属性”窗口进行、运行时通过代码置或在运行时由用户输入。

通过读Text属性能在运行时检索TextBox的当前内容。

多行TextBox和WordWrap

TextBox在缺省情况下只显示单行文本,且不显示ScrollBar。如果文本长度

超过可用空间,则只能显示部分文本。通过设置MultiLine和ScrollBars两种

属性(只能在设计程序时设置),可以改变TextBox的外观和行为。

不要把ScrollBars属性与ScrollBar控件混淆,ScrollBar控件并不属于

TextBox,它具有自己的属性集。

把MultiLine属性设为True,可以使TextBox在运行时接受或显示多行文

本。只

要没有水平方向ScrollBar,多行TextBox中的文本会自动按字换行。

ScrollBars属性的缺省值被设置为0(None)。自动按字换行省去用户在行尾插

入换行符的麻烦。当一行文本

已超过所能显示的长度时,TextBox自动将文本折回到下一行显示。

在设计时,不能在“属性”窗口输入换行符。在过程中,可以通过插入一个回

车加

上换行符(ANSI字符13和0)来产生一个行断点。也可以用常量vbCrLf

插入一个回车

与换行符组合。例如,下面的事件过程是在加载窗体时,把两行文本放入一个

多行TextBox(Text1)中的示例。

SubForm_Load()

="Herearetwolines"_

&vbCrLf&"inatextbox"

EndSub

使用TextBox中的文本

利用TextBox的SelStart、SelLength和SelText属性,可以控制

TextBox的插入点和选择行为。这些属性仅能在运行时使用。

当一个TextBox首次得到焦点时,TextBox缺省的插入点和光标位置在文本

的最

左边。用户可以用键盘和鼠标移动它们。当TextBox失去焦点而后再得到

时,插入点位置

与用户最后设置的位置一样。

在有些情况下,它可能与用户设置不一致。如:在字处理应用程序中,用户会

希望

新字符出现在已有文本后面;在数据项应用程序中,用户会希望他的输入替换

原有条目。使

用SelStart和SelLength属性,用户可以根据需要改变TextBox的行为。

SelStart属性是一个数字,指示文本串内的插入点,其中0表示最左边的位

置。如果SelStart属性值大于或等于文本中的字符数,那么插入点将被放在最后

一个字符之

后,如图3.7所示。该例子的工作版,请参阅应用程序示例

中的。SelLength属性是一个设置插入点宽度的数值。把SelLength设

为大于0的值,会选中并突出显示从当前插入点开始的SelLength个字符。图

3.8显示选择的性能。

如果有一段文本被选中,此时用户键入的文字将替换被选中的文本。有些情况

下,

也可以用粘贴命令用新文本替换原有的文本。SelText属性是一串文本,可

以在运行时给

它赋值以替换当前选中的文本。如果没有选中的文本,SelText将在当前插

入点插入文本。详细信息关于TextBox控件的属性的详细信息,请参阅第七章

“使用VisualBasic的标准控件”。

关于TextBox控件的属性的详细信息,请参阅第七章“使用VisualBa

sic的标准控件”。

大多数应用程序需要向用户提供选择,如简单的“Yes/No”选项、或者从包含

成百个

可能性的列表中进行选择。VisualBasic包含几种用于提供选择的标准控

件。下列表格总结

了这些控件及其用途。

CheckBox

CheckBox表明一个特定的状态是选定(on)还是清除(off)。在应用程序中

使用CheckBox为用户提供了“True/False”或“yes/no”的选择。因为

CheckBox彼此独立工作,所以用户可以同时选择任意多个CheckBox。例如,在图

3.9中,可同时选定粗体和斜体。

CheckBox应用程序

这个例子使用一个CheckBox来决定文本用普通字体还是用斜体字显示。关于

例的工作版本,请参阅应用程序示例中的。如图

3.10所示,此应用程序有一个TextBox,一个Label,一个CommandButton和两

个CheckBox。

下表列出了应用程序中的对象的属性设置。

选定粗体或斜体时,CheckBox的Value属性值设置为1,不选定时为0。

缺省Value值为0,所以除非改变Value属性值,否则第一次显示时不会选定

CheckBox。可以用常量vbChecked和vbUnchecked表示数值1和0。

checkbox应用程序中的事件

当单击CheckBox时,会发生CheckBox的Click事件。此事件过程测试是

否选

定CheckBox(即是否Value=vbChecked)。如果选定,通过设置Font对象

的Bold或Italic属性,将文本转换为粗体或斜体;该Font对象是由TextBox

的Font属性返回的。

PrivateSubchkBold_Click()

=vbCheckedThen'如果选定。

=True

Else'如果没有选定。

=False

EndIf

EndSub

PrivateSubchkItalic_Click()

=vbCheckedThen'如果选定。

=True

Else'如果没有选定。

=False

EndIf

EndSub

用选项按钮进行选项分组

选项按钮表示给用户一组两个或更多的选择。但是,不同于CheckBox,选项

按钮总是作为一组的组成部分工作的;因此,选择一个选项按钮就会立即清除该组

中的其它按钮。

定义一个选项按钮组,告诉用户“这是一组选择,从中选一个,而且只选一

个”。

例如,在图3.11所示的选项按钮组中,用户只能在三个选项按钮中选择一

个。

创建选项按钮组

直接放在一个窗体中(也就是不在Frame或PictureBox中)的所有的选项

按钮

构成一组。如果想创建别的选项按钮组,必须将其中一些选项按钮组放到

Frame或PictureBox中去。

所有在给定的Frame中的选项按钮,组成一个独立的组,在PictureBox中

的所有选项按钮也是如此。用这种方法生成一个独立的组时,总是要先画好一个

Frame或PictureBox,然后,将选项按钮画到里面。图3.12显示了一个具有两

个选项按钮组的窗体。

在Frame中画了一组选项按钮后,用户只能在组内选择一个选项按钮。要在

Frame中为控件分组,请按照以下步骤执行:

1.在“工具箱”中选择Frame控件,并在窗体上画出Frame。

2.在“工具箱”中选择OptionButton控件,并在Frame内画出控件。

3.如果还想在Frame中增加选项按钮,重复步骤2。先画Frame,再在

Frame上画每个控件,这样移动Frame时控件会一起移动。如果将已经存在的控

件移到Frame上,此控件不会和Frame一起移动。

如果将已存在的控件分组到一个Frame中去,可以选择这些控件,然后剪

贴到Frame或Picture控件上去。

控件的容器

当控件是独立的对象时,窗体和控件之间存在着某种父子关系。图3.12表明

选项按钮怎样才能包含在一个窗体或一个Frame控件中。

要理解容器的概念,首先要把所有的控件都想象为所在窗体的孩子。实际上,

大多

数控件都支持只读Parent属性,它的值就是控件所在的窗体。作为孩子,控

件决定其在父

窗体上的位置。控件的Left属性和Top属性是相对父窗体而言,且控件不

能移出父窗体

的边界。移动容器的同时也移动了控件,因此控件与容器的相对位置不变(即

控件的Left属性和Top属性不变)。

选定或禁止选项按钮

一个选项按钮可以用以下方法选择:

1.在运行期间用鼠标单击选项按钮。

2.用Tab键定位到选项按钮组,然后在组内使用方向键(箭头键)定位选项按

钮。

3.用代码将它的Value属性设置为True:=True

4.使用在Label的标题中指定的快捷键。

5.要使某个按钮成为选项按钮组中的缺省按钮,只要在设计时将其Value属性

设置成True。它保持被选中状态,直到用户选择另一个不同的选项按钮或用代码

改变它。

要禁用选项按钮,将其Enabled属性设置为False。程序运行时,若此选项

按钮变

灰,表示无法选取此选项按钮。

Options应用程序

图3.13所示的窗体使用选项按钮为一台计算机选择处理器类型和操作系统。

当用

户在组内选择了选项按钮后,Label的标题就改变,反映当前的选择。关于此

例的工作版本,

请参阅应用程序示例中的。

下表列出了应用程序中对象属性的设置。

Options应用程序中的事件

选项应用程序对事件的响应如下:

前三个选项按钮的Click事件为窗体级的string变量strComputer分配一

个相应的描述。

后两个选项按钮的Click事件为第二个窗体级变量strSystem分配一个相应

的描述。

这个方法的关键就在于使用这两个窗体级变量,strComputer和strSystem。

这两个变量具有不同的string值,选项按钮的最后选定就依赖于这些值。

每次选择新的选项按钮,其Click事件的代码就更新相应变量的值。

PrivateSubopt586_Click()

strComputer="Pentium"

CallDisplayCaption

EndSub

然后它调用一个名为DisplayCaption的过程,此过程把两个变量连在一起并

改变Label的Caption属性。

SubDisplayCaption()

n="Youselecteda"&

_strComputer&"running"&strSystem

EndSub

使用子过程是因为改变Caption属性的过程对所有五个选项按钮来说基本是

一样

的,只不过变量的值因情况而异。这就可以避免在每个Click事件中重复同

样的代码。

变量和子过程将在第五章“编程基础”中讨论。

使用ListBox和ComboBox

ListBox和ComboBox为用户提供了选择。按照缺省规定,选项以垂直单列方

显示,也可以设置成多列方式。如果项目数量超过ComboBox或ListBox所能

显示的数目,ScrollBar自动出现在控件上。于是用户可以在列表中上下左右滚

动。图3.14为一个单列ListBox。

ComboBox兼有TextBox和ListBox两者的功能。该控件允许用户通过键入

文本

或选择列表中的项目来进行选择。图3.15为一个ComboBox。

与其它含有单值的控件相反,例如Label的Caption属性或TextBox的

text属性,ListBox和ComboBox含有多个值或值的集合。在运行时用内置的方

法增加、删除及

保持集合中的值。要将几条项目添加到名为List1的ListBox中,其代码如

下:m"Paris"

m"NewYork"

m"SanFrancisco"

ListBox和ComboBox是在有限空间为用户提供大量选项的有效方法。

关于ListBox和ComboBox控件的详细信息,请参阅第七章“使用Visual

Basic的标准控件”。

滚动条通常与TextBox或窗口一起使用,但有时也可作输入设备。因为

ScrollBar控件可按比例指示当前位置,所以可以单独使用以控制程序输入,如控

制声音音量或调整

图片颜色。HScrollBar(水平)和VScrollBar(垂直)控件是独立的,它有

自己的事件、

属性和方法集。ScrollBar控件与附属于TextBox、ListBox、ComboBox或

MDI窗体的内部ScrollBar不同。(TextBox和MDI窗体具有ScrollBars属

性,可增加或删除附属于

控件的ScrollBar。)

现在Windows界面提示行支持Slider控件作为输入设备而不用ScrollBar。

关于Slider控件的例子,请参阅Windows95的控件面板。VisualBasic的专业

版和企业版中包含一个Windows95风格的Slider控件。

关于ScrollBar控件的详细信息,请参阅第七章“使用VisualBasic的标准

控件”。

因为Windows是图形用户界面,所以在应用程序上界面显示图形图像的方法

十分

重要。VisualBasic包含四个控件以简化与图形有关的操作,它们是

PictureBox控件、Image控件、Shape控件和Line控件。

Image、Shape和Line控件有时被称作轻量图形控件。它们需要较少的系统

资源,

因此比PictureBox控件显示得快并且包含PictureBox中可用的属性、方法

和事件的子

集。每一个控件都适用于一个特定的目的。

PictureBox控件的主要作用是为用户显示图片。实际显示图片由Picture属

性决定。Picture属性包括被显示的图片的文件名(及可选的路径名)。

窗体对象也具有Picture属性,通过设置该属性可直接在窗体背景上显示图

片。

要在运行时显示或替换图片,可利用函数LoadPicture来设置Picture属

性。提供图片文件名和可选路径名,由LoadPicture函数处理加载和显示图片的

细节。

e=LoadPicture("")

PictureBox控件具有AutoSize属性,当该属性设置为True时,

PictureBox能自动调整大小与显示的图片匹配。如果要用AutoSize属性设置为

True的PictureBox,设计窗体时就需要特别小心。图片将不考虑窗体上的其它

控件而调整大小,这可能导致意想

不到的后果,如覆盖其它控件。设计时应通过加载每一幅图片来检查是否有这

种现象发生。

Picturebox控件也可以用作其它控件的容器。像Frame控件一样,可以在

PictureBox控件上面加上其它控件。这些控件随PictureBox移动而移动,其

Top和Left属性是相对PictureBox而言,而与窗体无关。

PictureBox容器的一种普通用法是ToolBar或StatusBar。可将Image控

件置于这些容器中作为按钮或添加Label显示状态信息。将Align属性设置为

Top、Bottom、Left或Right,PictureBox将粘贴在窗体的边缘。图3.16为一

个Align属性设置为Bottom的PictureBox。它包含两个可用于显示状态信息的

Label控件。

PictureBox控件有几种方法使PictureBox可用于其它目的。例如:把

PictureBox看作是一块空画布,可以在它上面画画或打印,或者显示文本、图

形,甚至是简单的动

画。

Print方法允许向PictureBox控件输出文本,如同向打印机输出一样。有几

种字

体属性可以控制由Print方法输入的文本的特性;Cls方法可以清除输出。

Circle、Line、Point和Pset方法可以用于在PictureBox中画图形。一些

属性如DrawWidth、FillColor和FillStyle允许自定义图形的外观。

用PaintPicture方法在图片控件内移动Image、并在几幅不同的Image间

快速变化就能产生动画。

关于PictureBox控件的详细信息,请参阅第七章“使用VisualBasic的标

准控件”。

Image、Shape和Line控件都被认为是轻量图形控件,也就是说,它们只支

持PictureBox的属性、方法和事件的一个子集。因此,它们需要较少的系统资源

而且加载也比

PictureBox控件更快。

Image控件与PictureBox控件相似,但它只用于显示图片。它不能作为其它

控件

的容器,也不支持PictureBox的高级方法。图片加载于Image控件的方法

和它们加载于PictureBox中的方法一样。设计时,将Picture属性设置为文件

名和路径,运

行时,利用Loadpicture函数。

Image控件调整大小的行为与PictureBox不同。它具有Stretch属性,而

PictureBox具有AutoSize属性。将AutoSize属性设为True可使PictureBox

根据图片调整大小,设为False则图片将被剪切(只有一部分图片可见)。

Stretch属性设为False(缺省值)时,Image控件可根据图片调整大小。将

Stretch属性设为True将根据Image控件的大小来调整图

片的大小,这可能使图片变形。

关于Image控件的详细信息,请参阅第七章“使用VisualBasic's的标准控

件”。

使用Image控件创建自己的按钮

Image控件也可以识别Click事件,因此可在要用CommandButton的任何地

方使用该控件。这种方法可以方便地建立有图片的按钮来取代标题。将几个Image

控件组成一组,水平置于屏幕顶端(通常在一个PictureBox中),可以在应用程

序中建立一个ToolBar。

例如,对TestButtons一例给出的Image控件,用户可以像选择

CommandButton一样来选择它。窗体第一次被显示时,控件显示VisualBasic的

图标库中三个交通图标中的一个。每单击Image控件一次,就显示一个不同的图

标(该例的工作版本,请参阅示例应用程序中的)。

如果设计时观察一下窗体,就会发现它实际包含所有三个图标,它们堆集在一

起。

改变顶部Image控件的Visible属性为False,下一幅图像(如果其

Visible属性为真)将显示于顶部。

图3.17为一个交通图标的Image控件()。

要在Image控件的周围建立一个边框,将BorderStyle属性设为1——固

定的单边框。

与CommandButton不同,单击Image控件时,并不显示它被按下的动作。

也就是说除非在MouseDown事件中改变位图,否则“按钮”正在被按下对用

户来说是看不

到的。

关于在Image控件中显示图形图像的详细信息,请参阅第七章“使用Visual

Basic的标准控件”。

Shape和Line控件可用来在窗体表面画图形元素。这些控件不支持任何事

件,只

用于表面装饰。

有几种属性可以控制Shape控件的外观。通过设置Shape属性,Shape控件

可显示为矩形、正方形、椭圆型、圆角矩形或圆角正方形。设置BorderColor和

FillColor属性可以改变颜色,BorderStyle、BorderWidth、FillStyle和

DrawMode属性控制如何画图。

Line控件与Shape控件相似,但仅用于画线。

关于Shape和Line控件的附加信息,请参阅第七章“使用VisualBasic的

标准控件”。

图3.18所示窗体用了四个Image控件,一个Shape控件,一个

PictureBox控件和一个CommandButton控件。当用户选择扑克牌符号时,Shape

控件使该符号突出显示,并且在PictureBox中显示相应的描述。关于本例的工作

版本,请参阅示例应用程序中的。

下表列出了应用程序中对象的属性设置。

滚动条通常与TextBox或窗口一起使用,但有时也可作输入设备。因为

ScrollBar控件可按比例指示当前位置,所以可以单独使用以控制程序输入,如控

制声音音量或调整

图片颜色。HScrollBar(水平)和VScrollBar(垂直)控件是独立的,它有

自己的事件、

属性和方法集。ScrollBar控件与附属于TextBox、ListBox、ComboBox或

MDI窗体的内部ScrollBar不同。(TextBox和MDI窗体具有ScrollBars属

性,可增加或删除附属于

控件的ScrollBar。)

现在Windows界面提示行支持Slider控件作为输入设备而不用ScrollBar。

关于Slider控件的例子,请参阅Windows95的控件面板。VisualBasic的专业

版和企业版中包含一个Windows95风格的Slider控件。

关于ScrollBar控件的详细信息,请参阅第七章“使用VisualBasic的标准

控件”。

因为Windows是图形用户界面,所以在应用程序上界面显示图形图像的方法

十分

重要。VisualBasic包含四个控件以简化与图形有关的操作,它们是

PictureBox控件、Image控件、Shape控件和Line控件。

Image、Shape和Line控件有时被称作轻量图形控件。它们需要较少的系统

资源,

因此比PictureBox控件显示得快并且包含PictureBox中可用的属性、方法

和事件的子

集。每一个控件都适用于一个特定的目的。

PictureBox控件的主要作用是为用户显示图片。实际显示图片由Picture属

性决定。Picture属性包括被显示的图片的文件名(及可选的路径名)。

窗体对象也具有Picture属性,通过设置该属性可直接在窗体背景上显示图

片。

要在运行时显示或替换图片,可利用函数LoadPicture来设置Picture属

性。提供图片文件名和可选路径名,由LoadPicture函数处理加载和显示图片的

细节。

e=LoadPicture("")

PictureBox控件具有AutoSize属性,当该属性设置为True时,

PictureBox能自动调整大小与显示的图片匹配。如果要用AutoSize属性设置为

True的PictureBox,设计窗体时就需要特别小心。图片将不考虑窗体上的其它

控件而调整大小,这可能导致意想

不到的后果,如覆盖其它控件。设计时应通过加载每一幅图片来检查是否有这

种现象发生。

Picturebox控件也可以用作其它控件的容器。像Frame控件一样,可以在

PictureBox控件上面加上其它控件。这些控件随PictureBox移动而移动,其

Top和Left属性是相对PictureBox而言,而与窗体无关。

PictureBox容器的一种普通用法是ToolBar或StatusBar。可将Image控

件置于这些容器中作为按钮或添加Label显示状态信息。将Align属性设置为

Top、Bottom、Left或Right,PictureBox将粘贴在窗体的边缘。图3.16为一

个Align属性设置为Bottom的PictureBox。它包含两个可用于显示状态信息的

Label控件。

PictureBox控件有几种方法使PictureBox可用于其它目的。例如:把

PictureBox看作是一块空画布,可以在它上面画画或打印,或者显示文本、图

形,甚至是简单的动

画。

Print方法允许向PictureBox控件输出文本,如同向打印机输出一样。有几

种字

体属性可以控制由Print方法输入的文本的特性;Cls方法可以清除输出。

Circle、Line、Point和Pset方法可以用于在PictureBox中画图形。一些

属性如DrawWidth、FillColor和FillStyle允许自定义图形的外观。

用PaintPicture方法在图片控件内移动Image、并在几幅不同的Image间

快速变化就能产生动画。

关于PictureBox控件的详细信息,请参阅第七章“使用VisualBasic的标

准控件”。

Image、Shape和Line控件都被认为是轻量图形控件,也就是说,它们只支

持PictureBox的属性、方法和事件的一个子集。因此,它们需要较少的系统资源

而且加载也比

PictureBox控件更快。

Image控件与PictureBox控件相似,但它只用于显示图片。它不能作为其它

控件

的容器,也不支持PictureBox的高级方法。图片加载于Image控件的方法

和它们加载于PictureBox中的方法一样。设计时,将Picture属性设置为文件

名和路径,运

行时,利用Loadpicture函数。

Image控件调整大小的行为与PictureBox不同。它具有Stretch属性,而

PictureBox具有AutoSize属性。将AutoSize属性设为True可使PictureBox

根据图片调整大小,设为False则图片将被剪切(只有一部分图片可见)。

Stretch属性设为False(缺省值)时,Image控件可根据图片调整大小。将

Stretch属性设为True将根据Image控件的大小来调整图

片的大小,这可能使图片变形。

关于Image控件的详细信息,请参阅第七章“使用VisualBasic's的标准控

件”。

使用Image控件创建自己的按钮

Image控件也可以识别Click事件,因此可在要用CommandButton的任何地

方使用该控件。这种方法可以方便地建立有图片的按钮来取代标题。将几个Image

控件组成一组,水平置于屏幕顶端(通常在一个PictureBox中),可以在应用程

序中建立一个ToolBar。

例如,对TestButtons一例给出的Image控件,用户可以像选择

CommandButton一样来选择它。窗体第一次被显示时,控件显示VisualBasic的

图标库中三个交通图标中的一个。每单击Image控件一次,就显示一个不同的图

标(该例的工作版本,请参阅示例应用程序中的)。

如果设计时观察一下窗体,就会发现它实际包含所有三个图标,它们堆集在一

起。

改变顶部Image控件的Visible属性为False,下一幅图像(如果其

Visible属性为真)将显示于顶部。

图3.17为一个交通图标的Image控件()。

要在Image控件的周围建立一个边框,将BorderStyle属性设为1——固

定的单边框。

与CommandButton不同,单击Image控件时,并不显示它被按下的动作。

也就是说除非在MouseDown事件中改变位图,否则“按钮”正在被按下对用

户来说是看不

到的。

关于在Image控件中显示图形图像的详细信息,请参阅第七章“使用Visual

Basic的标准控件”。

Shape和Line控件可用来在窗体表面画图形元素。这些控件不支持任何事

件,只

用于表面装饰。

有几种属性可以控制Shape控件的外观。通过设置Shape属性,Shape控件

可显示为矩形、正方形、椭圆型、圆角矩形或圆角正方形。设置BorderColor和

FillColor属性可以改变颜色,BorderStyle、BorderWidth、FillStyle和

DrawMode属性控制如何画图。

Line控件与Shape控件相似,但仅用于画线。

关于Shape和Line控件的附加信息,请参阅第七章“使用VisualBasic的

标准控件”。

图3.18所示窗体用了四个Image控件,一个Shape控件,一个

PictureBox控件和一个CommandButton控件。当用户选择扑克牌符号时,Shape

控件使该符号突出显示,并且在PictureBox中显示相应的描述。关于本例的工作

版本,请参阅示例应用程序中的。

下表列出了应用程序中对象的属性设置。

Images

Image应用程序对事件的响应如下:

1.每一个Image控件的Click事件使Shape控件的Left属性与它自己的

Left属性相同,并将图形移到Image的顶端。

2.调用PictureBox的Cls方法清除StatusBar的当前标题。

3.调用PictureBox的Print方法在StatusBar上打印新标题。

Image控件Click事件的代码如下:

PrivateSubimgHeart_Click()

=

"Selected:Club"

e=True

EndSub

,Click事件代码中第一行利用=操作符为Shape控件的Left属性赋一个

值(让它等于Image控件的Left属性)。下面两行调用方法,因而不需要操作

符。在第三

行中,值("Selected:Club")是Print方法的一个参数。

该应用代码中还有一行很重要;它在FormLoad事件中。

e=False

将Shape控件的Visible属性设为False,Shape控件被隐藏起来直至单击

第一幅Image。

在Image控件Click事件的最后一步将Visible属性设为True。

关于属性、方法和事件详细信息,请参阅第五章“编程基础”。

VisualBasic工具箱还包含几个其它的标准控件。有些控件可用来处理外部

数据库

中的大量数据。有些控件可用来访问Windows文件系统。还有其它一些控件

难以分类,但却十分有用。

在VisualBasic应用程序中还可使用ActiveX控件,以前称为自定义控件

或OLE控件,用法与使用标准控件一样。VisualBasic的专业版和企业版中的若

干ActiveX事件同样具有创建自定义控件的功能。可以想像,加上大量厂商制作

的附加ActiveX控件,几乎可以完成任何工作。

关于使用ActiveX控件的详细信息,请参阅第四章“工程的管理”。

现代商业中,大多数信息存放于一个或多个中央数据库中。VisualBasic

提供了多种数据访问控件,可以访问多数流行的数据库,如MicrosoftAccess和

SQL服务器。

a控件用来连接数据库。可把它看成是数据库与窗体中其它控件之

间的

一个管道线。Data控件的属性、方法和事件允许从应用程序内部定位和处理

外部数据。

st控件与ListBox控件相似。DataList控件与ADOData控件一起

使用时,它将自动被来自外部数据库某一字段的数据清单填充。

mbo控件如同DBList和TextBox的组合。TextBox区域内选中的

文本可以编辑,变更出现在底层数据库中。

id控件显示在网格或表中的数据。与ADOData控件一起使用时,它

显示

来自于外部数据库多个字段的完全可编辑数据。

oftHierarchicalFlexGrid控件是唯一能显示数据的多个视图的控

件。可把

它看作网格和树或大纲控件的组合。运行时,用户可重新安排行和列以提供数

据的不同视图。

关于Data控件的详细信息,请参阅第七章“使用VisualBasic的标准控

件”。

VisualBasic提供三个控件以增加应用程序中的文件处理能力。通常,这些

控件在

一起使用以查看驱动器、目录和文件。有一些特殊的属性和事件使它们相互联

系。

DriveListBox控件看起来像ComboBox。它提供下拉式驱动器清单,用户可

从中作出选择。

DirListBox与ListBox控件相似,但它具有显示当前所选驱动器目录清单的

置能力。

FileListBox控件看起来像显示所选目录的文件名清单的ListBox。

这些控件主要是为在早期VisualBasic版本中创建的应用程序的向下兼容性

而提供的。CommonDialog控件提供处理文件访问的简单方法。关于

CommonDialog控件的详细信息,请参阅本章后面的“其它控件”。

VisualBasic还提供了其它几个标准控件。每个控件都服务于唯一的目的。

Timer控件可以在应用中以重复时间间隔产生一个事件。这对不需要与用户交

的代码的执行非常有用。

OLE容器控件很容易为应用程序增加链接和嵌入等功能。通过OLE容器控

件,可以提供对任何OLE——可用的应用程序(如MicrosoftExcel、Word和其

它许多应用程序)的功能的访问,。

CommonDialog控件在应用程序中增加内置对话框,用来选择文件、颜色、字

体和打印函数。

关于标准控件的附加信息,请参阅第七章“使用VisualBasic的标准控

件”。

焦点是接收用户鼠标或键盘输入的能力。当对象具有焦点时,可接收用户的输

入。

在MicrosoftWindows界面,任一时刻可运行几个应用程序,但只有具有焦

点的应用程序才

有活动标题栏,才能接受用户输入。在有几个TextBox的VisualBasic窗体

中,只有具有焦点的TextBox才显示由键盘输入的文本。

当对象得到或失去焦点时,会产生GotFocus或LostFocus事件。窗体和多

数控件支持这些事件。

下列方法可以将焦点赋给对象。

运行时选择对象。

运行时用快捷键选择对象。

在代码中用SetFocus方法。

有些对象,它是否具有焦点是可以看出来的。例如,当命令按钮具有焦点时,

题周围的边框将突出显示(见图3.19)。

只有当对象的Enabled和Visible属性为True时,它才能接收焦点。

Enabled属性允许对象响应由用户产生的事件,如键盘和鼠标事件。Visible属性

决定了对象在屏幕上是否可见。

只有不包含任何可接收焦点的控件的窗体,才能接收焦点。

Validate

控件也有一个Validate事件,在控件失去焦点前发生。然而,仅当即将接受

焦点

的控件的CausesValidation属性设置为True时该事件发生。在许多情况

下,由于Validate事件发生在失去焦点之前,因此对数据验证来说它比

LostFocus事件更适用。详细信息,

请参阅第七章“使用VisualBasic标准控件”中的“通过限制焦点验证控件

数据”。

有些控件,例如轻量控件,不能接受焦点。轻量控件包含下面的控件:

Frame控件

Image控件

Label控件

Line控件

Shape控件

此外,运行时不可见的控件,如Timer控件,不能接受焦点。

Tab

例如,假设您建立了两个名称为Text1和Text2的TextBox,然后又建立了

一个名称为Commandl的CommandButton。应用程序启动时,Text1具有焦点。按

TAB键将使焦点按控件建立的顺序在控件间移动,如图3.20所示。

设置TabIndex属性将改变一个控件的tab键顺序。控件的TabIndex属性

决定了它在tab键顺序中的位置。按照缺省规定,第一个建立的控件其TabIndex

值为0,第二个的TabIndex值为1,以此类推。当改变了一个控件的tab键顺

序位置,Visual自动为其它控件的tab键顺序位置重新编号,以反映插入和删

除。例如,要使Command1变为tab键顺序中的首位,其它控件的TabIndex值

将自动向上调整,如下表所示。

因为编号从0开始,TabIndex的最大值总是比tab键顺序中控件的数目少1。

即使TabIndex属性值高于控件数目,VisualBasic也会将这个值转换为控件数减

一。

不能获得焦点的控件以及无效的和不可见的控件不具有TabIndex属性,因而

不包含在tab键顺序中。按TAB键时,这些控件将被跳过。

Tab

通常,运行时按TAB键能选择tab键顺序中的每一控件。将控件的TabStop

属性设为False(0),便可将此控件从tab键顺序中删除。

TabStop属性已置为False的控件,仍然保持它在实际tab键顺序中的位

置,只不过在按tab键时这个控件被跳过。

一个OptionButton组只有一个tab站。选中的按钮(即Value值为True

的按钮)的TabStop属性自动设为True,而其它按钮的TabStop属性为

False。

如果应用程序要为用户提供一组命令,菜单提供一种方便的给命令分组的方

法,并

使用户容易访问这些命令。

图3.21举例说明了无标题窗体的菜单界面元素。

菜单栏立即出现在窗体的标题栏下面,并包含一个或多个菜单标题。当单击一

个菜

单标题(如“文件”),包含菜单项目的列表就被拉下来。菜单项可以包括命

令(如“新建”和“退出”)、分隔条和子菜单标题。用户看到的每个菜单项和在

“菜单编辑器”中定义的一个菜单控件对应(“菜单编辑器”将在本章后面讨

论)。

要使您的应用程序简单好用,应该将菜单项按其功能分组。例如,图3.21中

与文

件有关的命令“新建”,“打开”,和“另存为”都列入“文件”菜单。有些

菜单项目直接执行动作,

如“文件”菜单中的“退出”菜单项将关闭应用程序。其它菜单项显示一个对

话框,即要求用户

提供应用程序执行动作所需信息的窗口。应该在这些菜单项后加上省略符

(...)。例如,当从“文件”菜单中选择“另存为...时”,出现“文件另存为”对

话框。

菜单控件是一个对象;与其它对象一样,它具有定义它的外观与行为的属性。

在设

计或运行时可以设置Caption属性、Enabled和Visible属性、Checked属

性以及其它属性。菜单控件只包含一个事件,即Click事件,当用鼠标或键盘选

中该菜单控件时,将调用该

事件。

关于菜单控件的详细信息,请参阅第六章“创建用户界面”中的“用菜单编辑

器创建菜单”。

弹出式菜单是显示于窗体之上,独立于菜单栏的浮动式菜单,如图3.22所

示。显示在弹出式菜单上的项取决于鼠标右键按下时指针的位置,因此,弹出式菜

单又称为上下文

菜单(在Windows95中,击鼠标右键可激活上下文菜单。)应该用弹出式菜

单提供一种访

问公共的上下文命令的高效方法。例如,用鼠标右键单击一个TextBox,将会

出现一个上下文菜单(如图3.22所示)。

任何至少有一个菜单项的菜单,运行时都可以显示为弹出式菜单。使用

PopupMenu方法可显示弹出式菜单。

关于弹出式菜单的详细信息,请参阅第六章“创建用户界面”中的“用菜单编

辑器创建菜单”。

使用“菜单编辑器”,可向现存的菜单中增加新命令、用自己的命令替代现存

的菜单

命令、产生新的菜单和菜单栏,改变和删除现存菜单和菜单栏。“菜单编辑

器”的主要优点是使用方便。可以在只用很少编程的全交互方式中自定义菜单。

要显示“菜单编辑器”,请

在“工具”菜单中选择“菜单编辑器这将打开“菜单编辑器”,如图3.23所

大多数菜单控件属性可用“菜单编辑器”设置,同样,所有的菜单属性也可以

在“属性”窗口中得到。通常,在“菜单编辑器”中建立菜单,但要快速改变单个

属性,一般使用“属性”窗口。

关于创建菜单和使用“菜单编辑器”的详细信息,请参阅第六章“创建用户界

面”中的“用菜单编辑器创建菜单”。

在基于Windows的应用程序中,对话框被用来提示用户提供应用程序继续运

行所

需的数据或者向用户显示信息。对话框是一种特殊类型的窗体对象,可用以下

三种方法之一

建立:

使用MsgBox或InputBox函数的代码可以创建预定义对话框。

使用标准窗体或自定义已存在的对话框创建自定义对话框。

使用CommonDialog控件可创建标准对话框,如“打印”和“打开文件”。

图3.24是利用MsgBox函数创建预定义对话框的例子。

当在代码中调用MsgBox函数时,该对话框被显示。代码如下:

MsgBox"Errorencounteredwhiletryingtoopenfile,"&vbCrLf&

"pleaseretry.",

vbExclamation,"TextEditor"

需要给MsgBox函数提供三条信息或三个参数:消息文本、决定对话框类型的

数(numeric值)和标题。由于样式可以使用按钮和图标的各种各样组合,所

以创建对话框

更加容易。

由于大多数对话框需要用户的交互作用,所以通常显示为模态对话框。在继续

使用

应用程序的其它部分以前,必须关闭(隐藏或卸载)模态对话框。例如,若在

切换到其它窗

体或其它对话框前必须单击“确定”或者“取消”,那么这个对话框就是模态

对话框。

非模态对话框不需要关闭就可以使焦点在该对话框和其它窗体之间移动。对话

框显

示时,可以在当前应用程序的其它地方继续工作。非模态对话框很少;通常因

为应用程序继

续前需要响应才显示对话框。VisualBasic中“编辑”菜单的“查找”对话

框就是一个非模态对话框。使用非模态对话框显示常用的命令或信息。

关于创建对话框的详细信息,请参阅第六章“创建用户界面”。

更多推荐

vb下载