Visual Basic 语 言 程 序 设 计第 6章 窗体与基本控件
6.1 对象的基本属性
– 本节介绍 VB内部控件的基本属性,多数的控件或窗体都具有这些属性。
– 6.1.1 属性的分类对象的属性分为 3种:只读属性、
运行时只读属性和可读写属性。
只读属性:
运行时只读属性:
可读写属性:
Visual Basic 语 言 程 序 设 计
6.1.2 对象的基本属性
(1)Name名称属性
(2)Caption标题属性
(3)Width,Height与 Left,Top属性,Width和
Height属性分别表示对象的宽度和高度,即对象的大小。 Left和 Top属性分别是控件的左边到其容器的左边,控件的上边到其容器的上边的距离,即对象的位置。对于窗体,Top表示窗体到屏幕顶部的距离,Left表示窗体到屏幕左边的距离。
Visual Basic 语 言 程 序 设 计
6.1.2 对象的基本属性
(4)Visible属性
– 该属性决定对象是否可见。
– True:程序运行时控件可见。
– False:程序运行时控件隐藏起来,不可见,但控件本身还存在。
(5)Enabled属性
– 该属性决定对象是否是有效。
– True:允许用户操作,并对操作作出响应。
– False:禁止用户操作,呈暗淡色。
(6)Appearance属性
– 该属性是窗体与有边框的控件都具有的一个属性,它的值决定了边框的绘制样式。它的取值有两个:
0— 表示以平面样式绘制,没有立体效果。
1— 表示以立体样式绘制边框。
Visual Basic 语 言 程 序 设 计
6.1.2 对象的基本属性
(7)BorderStyle属性
– 该属性用来设置窗体和控件边框样式。 BorderStyle属性在运行时是只读的。
– 0-None:控件周围没有边框。
– 1-Fixed Single:控件带有单边框。
(8)Font属性
– 该属性改变文字的外观,其,字体,对话框如图 6.2所示。
– FontName属性是字符型,决定了控件上正文的字体。
– FontSize属性是整型,决定了控件上正文的字体大小,以磅为单位。
– FontBold属性是逻辑型,表示控件上正文是否是粗体。
– FontItalic属性是逻辑型,表示控件上正文是否是斜体。
– FontStrikethru属性是逻辑型,表示控件上正文是否加删除线。
– FontUnderline属性是逻辑型,表示控件上正文是否带下划线。
Visual Basic 语 言 程 序 设 计
6.1.2 对象的基本属性
(9)ForeColor属性
– 该属性用来设置对象的前景颜色,即正文和作图时的颜色。其值是一个 16进制常数,用户可以在调色板中直接选择所需要的颜色。
(10)BackColor属性
– 该属性用来设置对象的背景颜色,即正文以外的显示区域的颜色。
(11)FillColor属性
– 该属性用来设置填充封闭图形所用的颜色。
(12)BackStyle属性
– 该属性用来设置背景风格。
– 0-Transparent:透明显示,即控件背景颜色显示不出来,若控件后面有其他控件或背景,均可设置为透明显示。
– 1-Opaque:不透明,此时可为控件设置背景颜色。
Visual Basic 语 言 程 序 设 计
6.1.2 对象的基本属性
(13)Alignment属性
– 该属性决定控件上正文水平对齐方式。
– 0-Left Justify,正文左对齐。
– 1-Rigth Justify,正文右对齐。
– 2-Center:正文居中。
(14)AutoSize属性
– 该属性决定控件是否根据正文自动调整大小。
– True:自动调整大小。
– False:保持原来设计时的大小,正文若太长多余部分会被隐藏掉。默认为 False。
Visual Basic 语 言 程 序 设 计
6.1.2 对象的基本属性
(15)WordWarp属性
– 该属性决定文本在垂直方向上是否改变显示区域的大小。
– WordWarp属性必须是在 AutoSize属性设置为 True时,
WordWarp属性才有效。
– True:表示按照文本和字体大小在垂直方向上改变显示区的大小,而在水平方向上不发生变化。
– False:表示在水平方向上按正文长度放大和缩小;在垂直方向上以字体大小来放大或缩小显示区。
(16)Tag属性
– 每一个窗体和控件都有一个 Tag属性,VB内部并不使用这个属性,只是在程序中利用它来标识对象实例。
Visual Basic 语 言 程 序 设 计
6.1.2 对象的基本属性
(17)ToolTipText属性
– 这是每一个可视控件都具有的属性,它用于返回或设置当鼠标在控件上暂停时显示的文本 (提示信息 )。
(18)TabIndex属性
– 该属性决定了当用户按 Tab键时,焦点在各个控件转移的顺序。
– 焦点是接收用户鼠标或键盘输入的能力。当对象具有焦点时,可接收用户的输入。
– 在 Windows环境下,可同时运行多个应用程序,有多个窗口,但焦点只能有一个。焦点能由用户或应用程序设置。
– 当在窗体上有多个控件时,对于大部分控件,VB会给它分配一个 Tab键顺序,所谓 Tab键顺序,就是按 Tab键时,焦点在各个控件上移动的顺序。一般,其顺序与控件建立的顺序相同,若要改变此顺序,可以设置控件的 TabIndex属性,TabIndex属性决定了它在
Tab中的位置。按默认值规定,第一个建立的控件的 TabIndex属性值为 0,第二个为 1,依次类推。在设计时用属性窗口或在运行时用代码可改变控件的 TabIndex属性。运行时,
不可见或无效的控件以及不能接收焦点的控件 (如 Frame,Lablel等控件 ),仍保持在 Tab
键顺序中,但切换时要跳过这些控件。
Visual Basic 语 言 程 序 设 计
6.1.2 对象的基本属性
(19)TabStop属性
– TabStop属性返回或设置一个值,该值用来指示是否能够使用
Tab键将焦点从另一个对象移动到这个对象上。当一个控件的
TabStop属性设置为 False时,用 Tab键就不能使该控件获得输入焦点,只有那些可以获得输入焦点的控件才具有该属性。
– 【 例 6.1】 在窗体上建立一个命令按钮,Command1,一个标签框,Label1,运行结果如图 6.3所示。
– 【 例 6.2】 窗体上有 6个标签,Label1~ Label6,每个标签的宽度和高度相同,其属性设置如表 6.1所示,运行结果如图
6.4所示。
Visual Basic 语 言 程 序 设 计
6.2 窗体的属性、事件和方法
6.2.1 窗体的常用属性 1.窗体基本属性
– 1.窗体基本属性包括,Name,Caption,Height、
Width,Left,Top,Font,Enabled,Visible、
ForeColor,BackColor属性等。
– 2.窗体的特有属性
(1)MaxButton属性
– 指定窗体标题栏的最大化按钮是否有效。只能在属性窗口中设置。
– True:窗体右上角有最大化按钮。
– False:窗体右上角无最大化按钮。
Visual Basic 语 言 程 序 设 计窗体的特有属性
(2)MinButton属性
– 指定窗体标题栏中的最小化按钮是否有效。只能在属性窗口中设置。
– True:窗体右上角有最小化按钮。
– False:窗体右上角无最小化按钮。
(3)ControlBox属性
– 该属性指定是否在窗体左上角有控制菜单框。该属性在运行时是只读的。
– True:在窗体左上角有控制菜单框。
– False:在窗体左上角无控制菜单框。
Visual Basic 语 言 程 序 设 计窗体的特有属性
(4)WindowState属性
– 该属性表示窗体执行时以什么状态显示。
– 0— Normal:正常窗口状态,有窗口边界。
– 1— Minimized:最小化状态,以图标方式运行。
– 2— Maximized:最大化状态,无边框,充满整个屏幕。
(5)Icon属性
– 在属性窗口中,可以单击 Icon设置框边的 … (省略号 ),打开一个,加载图标,对话框,用户可以选择一个图标文件装入,当窗体最小化时,以该图标显示。
(6)Moveable属性
– 指定用户是否可以用拖动窗口标题栏来移动窗口。若其值为 Ture,则可以移动。
Visual Basic 语 言 程 序 设 计窗体的特有属性
(7)ShowInTaskbar属性
– 指定一个窗体对象在运行时的窗口是否出现在 Windows任务栏中。若它的值为 True,则出现在任务栏中。该属性在运行时是只读的。
(8)BorderStyle属性
– 指定窗体的边框样式。改变此属性值,会改变 MinButton、
MaxButton和 ShowInTaskbar属性的设置值。
(9)Picture属性
– 该属性设置在窗体或控件中显示的图片。在设计时,单击属性窗口中 Picture属性右端的 … (省略号 ),可以打开一个
,加载图片,对话框,用户可以选择一个图形文件装入。
– 图片框 Picture控件,也具有 Picture属性。
Visual Basic 语 言 程 序 设 计
6.2.2 窗体的常用事件
窗体的事件较多,一般分鼠标事件、键盘事件、窗体装载事件等,下面分别介绍。
– 1.鼠标事件
所谓鼠标事件是指由用户操作鼠标而引发的但能被 VB中的各种对象识别的事件。鼠标有五个事件,Click,DblClick,MouseDown、
MouseUp和 MouseMove事件。
(1)Click(单击 )事件
(2)DblClick(双击 )事件
(3)MouseDown(按下鼠标 )事件
(4)MouseUp(释放鼠标 )事件
(5)MouseMove(移动鼠标 )事件
– 如果是双击一个控件时,将按顺序产生下列事件:
– MouseDown,MouseUp,Click,DblClick和 MouseMove事件。
Visual Basic 语 言 程 序 设 计窗体的事件
– 2.键盘事件
键盘事件包括,KeyPress,KeyDown和 KeyUp事件。
(1)KeyPress事件
(2)KeyDown事件
(3)KeyUp事件
– 3.其他事件
(1)Load(装入 )事件
(2)Unload(卸载 )事件
(3)Activate(活动 )和 DeActivate(非活动 )事件
(4)Paint(绘画 )事件
Visual Basic 语 言 程 序 设 计
6.2.3 窗体的常用方法
1.Move方法
– Move方法是几乎任何一个可视对象都具有的方法。它的作用是改变对象的位置和大小。
格式:[对象,] Move Left [,Top [,Width [,Height]]]
功能:用来移动窗体和控件,并可以改变其大小。
说明:对象是窗体或控件。
2.SetFocus方法
– 窗体对象和可以获得输入焦点的对象都具有此方法。调用对象的此方法后,任何输入将指向该对象。此方法不需要任何参数。只有当对象已经显示并且其 Enabled属性为 True时,才可调用对象的这个方法。
Visual Basic 语 言 程 序 设 计
6.2.4 控件的常用事件
鼠标事件,Click,DblClick,MouseDown、
MouseUp,MouseMove事件。
键盘事件,KeyDown,KeyUp,KeyPress事件。
Visual Basic 语 言 程 序 设 计
6.2.5 LoadPicture函数
如果要在窗体、图片框、图像框中装入图片,除了在设计中用属性窗口装载外,还可以在程序中使用
LoadPicture函数。
– 格式:[对象名,] Picture=LoadPicture("[文件名] ")
– 功能,LoadPicture是一个函数,用来将指定图形文件调入内存。
– 【 例 6.3】 在窗体中装入图形作为背景,当用户单击窗体或双击窗体时,显示的标题、图形和文字都有所不同。
Visual Basic 语 言 程 序 设 计
6.8 DblClick事件的运行效果
【 例 6.4】 设计一个程序,在窗体上添加四个图像框,当用户在窗体上移动鼠标,四个图形文件就会装入图像框。
– 当用户在窗体内移动鼠标时,就会发生 MouseMove
事件,执行 Form_MouseMove过程语句将四个图形文件分别装入四个图像框中。程序的执行屏幕如图
6.10所示。将上述程序代码剪切到 MouseUp事件中,
释放鼠标也能将四个图形文件分别装入四个图像框中。
Visual Basic 语 言 程 序 设 计
6.8 DblClick事件的运行效果
【 例 6.5】 用窗体键盘的 KeyDown事件,在窗体上画一个圆。如图 6.11所示。
【 例 6.6】 用窗体的单击 Click事件,在窗体上和图片框上各画一个圆。如图 6.12所示。
【 例 6.7】 利用 KeyPress事件,在窗体上显示按键的
ASCII码及对应的字符。如图 6.13所示。
【 例 6.8】 利用 KeyPress事件,可以对输入的数据进行过滤。如图 6.14所示。
【 例 6.9】 使用 Move方法使窗体移动并改变其大小。如图 6.15所示。
Visual Basic 语 言 程 序 设 计
6.3 多窗体
在集成开发环境中,使用,工程\添加窗体,
菜单,就可以在一个工程中使用多个窗体。被设置为启动对象的窗体在程序运行之初会被自动加载和显示,但是只能在工程属性中设置一个窗体模块为启动对象。当启动对象是 Sub
Main过程时,要显示窗体或当显示一个窗体后再显示其他的窗体,就要考虑窗体的加载、显示、隐藏和卸载问题。
Visual Basic 语 言 程 序 设 计
6.3.1 加载窗体
加载窗体使用 Load语句。
– 格式,Load 窗体名
– 功能:加载窗体到内存。
– 说明:加载窗体只是将这个窗体对象装入内存,但并不显示这个窗体对象。此语句只是需要在初始化时加载所有的窗体并在以后需要他们的时候显示。
当 VB加载窗体时,先把窗体的各属性设置为初始值,
再执行 Load事件。
Visual Basic 语 言 程 序 设 计
6.3.2 显示窗体
显示一个窗体就要把它的 Visible属性设置为
True。显示一个窗体还可以用窗体对象的 Show
方法。
– 格式:[窗体名,] Show
– 功能:将窗体显示在屏幕上。
– 说明:如果在调用一个窗体的 Show方法时,指定的窗体尚未加载,VB将自动装载该窗体。
Visual Basic 语 言 程 序 设 计
6.3.3 隐藏窗体
把一个窗体的 Visible属性设置为 False或使用它的 Hide方法,就可以把窗体隐藏。
– 格式:[窗体名,] Hide
– 功能:将窗体隐藏起来。
– 说明:隐藏窗体并不把窗体从内存中卸载,只是变得不可见。在使用 Visible属性或 Hide方法隐藏窗体时,如果窗体尚未加载,则 VB会加载该窗体,但不会让它显示出来。
Visual Basic 语 言 程 序 设 计
6.3.4 卸载窗体
窗体用完后可以卸载窗体,要用 Unload语句。
Unload语句的语法格式与 Load语句相同。
– 格式,UnLoad 窗体名
– 功能:将窗体从内存中卸载下来。
– 说明:当卸载一个窗体时它的子窗体也会被卸载。
Visual Basic 语 言 程 序 设 计
6.3.5 建立多窗体
1.建立多窗体的操作步骤 2.启动窗体
– 【 例 6.10】 设计一个具两个窗体的程序,在每个窗体中装入一幅画。
– 【 例 6.11】 设计一个程序,当在窗体上选择,输入成绩,按钮后,屏幕就弹出一个输入学生成绩窗体,
用户可以输入学生的每科成绩,输入完成,单击
,计算,按钮,屏幕就弹出计算总分与平均分的窗体,并计算出学生的总分与平均分。
Visual Basic 语 言 程 序 设 计
6.4 鼠标事件与键盘事件
6.4.1 鼠标事件
– MouseDown,MouseUp和 MouseMove三个鼠标事件过程如下 (以
Form对象为例 ):
Sub Form_MouseDown(Button As Integer,Shift As Integer,
X As Single,Y As Single)
Sub Form_MouseUp(Button As Integer,Shift As Integer,
X As Single,Y As Single)
Sub Form_MouseMove(Button As Integer,Shift As
Integer,X As Single,Y As Single)
– 这三个鼠标事件过程具有相同的参数,他们把鼠标的信息传给过程。
Visual Basic 语 言 程 序 设 计
6.4.1 鼠标事件
– (1)Button:被按下的鼠标按钮,可以取以下 3个值,
如表 6.5所示。
– (2)Shift:表示 Shift,Ctrl和 Alt的状态。如表
6.7所示。
– (3)X,Y:这两个值对应于当前鼠标的位置,采用
ScaleMode属性指定的位置。
– 说明:
(1)有些鼠标只有两个按钮,或者虽有 3个按钮,但
Windows鼠标驱动程序不能识别中间按钮。在这种情况下,
表 6.6中的后 4个参数值不能使用。
Visual Basic 语 言 程 序 设 计
6.4.1 鼠标事件
– 表 6.5 Button按钮的 3个取值
– 符号常量 值 作 用
– LEFT_BUTTON 1 按下鼠标左按钮
– RIGHT_BUTTON 2 按下鼠标右按钮
– MIDDLE_BUTTON 4 按下鼠标中间按钮
– 表 6.6 Button按钮状态
– 十进制 二进制 作 用
– 0 000 没按下任何按钮
– 1 001 左键被按下 (默认 )
– 2 010 右键被按下
– 3 011 左、右按钮同时被按下
– 4 100 中间按钮被按下
– 5 101 同时按下中间和左按钮
– 6 110 同时按下中间和右按钮
– 7 111 3个按钮同时被按下
Visual Basic 语 言 程 序 设 计
6.4.1 鼠标事件
– (2)对于单按鼠标器,它的按钮定义为左按钮。如果鼠标带两个按钮,并使用 Windows的控制面板交换了鼠标器的左、右钮,那么,当按右按钮时,VB
认为是按了左按钮。
例如,如果按住 Ctrl键,然后在坐标为 (2000,3000)的点上按下鼠标器右键,则立即调用 Form_MouseDown过程,释放鼠标右键时,调用 Form_MouseUp过程。此时 Button、
Shift,X,Y这四个参数的值分别为 2,2,2000和 3000。
Visual Basic 语 言 程 序 设 计
6.4.1 鼠标事件
– (3)Shift是转换键,它指的是 3个转换状态,包括
Shift,Ctrl和 Alt。这 3个键分别以二进制方式表示,每个键用三位,即,Shift键为 001,Ctrl键为
010,Alt键为 100。当按下 Shift键时,Shift参数的值为 001(十进制数 1),当按下 Ctrl键时,Shift参数的值为 010(十进制数 2),而按下 Alt键时,Shift
参数的值为 100(十进制数 4)。如果同时按下两个或三个转换键,则 Shift参数的值即为上述两者或三者之和。因此,Shift参数共可取 8种值,如表 6.7
所示。
Visual Basic 语 言 程 序 设 计表 6.7 Shift参数的值
十进制 二进制 作 用
0 000 没有按下转换键
1 001 按下一个 Shift键
2 010 按下一个 Ctrl键
3 011 按下一个 Ctrl+Shift键
4 100 按下一个 Alt键
5 101 按下一个 Alt+Shift键
6 110 按下一个 Alt+Ctrl键
7 111 按下一个
Alt+Ctrl+Shift键
Visual Basic 语 言 程 序 设 计
6.4.2 键盘事件
当控制焦点置于某对象上,同时用户按下键盘中的任一键,便会使对象引发 KeyDown事件,释放按键便引发对象的 KeyUp事件。与
KeyPress事件不同,KeyUp事件和 KeyDown事件返回的是被按下或释放的键盘扫描码和组合键的状态。其事件过程形式如下:
– Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)
– Sub object_KeyDown([ Index As Integer,] KeyCode As
Integer,Shift As Integer) Sub Form_KeyUp(KeyCode As
Integer,Shift As Integer)
– Sub object_KeyUp([ Index As Integer,] KeyCode As
Integer,Shift As Integer)
Visual Basic 语 言 程 序 设 计
6.4.2 键盘事件
其中:
– (1)KeyCode参数是用户所操作的那个键的扫描代码,
它告诉事件过程,用户操作的物理键,也就是说,
大写字母和小写字母使用同一个键,他们的
KeyCode相同。对于有上档字符和下档字符的键,
其 KeyCode也是相同的,即为下档字符的 ASCII码。
表 6.8列出的部分字符的 KeyDown事件的 KeyCode和
KeyPress事件的 KeyAscii码以供区别。
– (2)Shift是一个整数,与鼠标事件过程中的 Shift
参数意义相同。
Visual Basic 语 言 程 序 设 计表 6.8 KeyCode与 KeyAscii码
键 (字符 ) KeyCode KeyAscii
"A" &H41 &H61
"a" &H41 &H61
"B" &H42 &H62
"b" &H42 &H62
"5" &H35 &H35
"%" &H35 &H25
"1"(大键盘上 ) &H31 &H31((
"1"(大键盘上 ) &H61 &H31
– 在 VB中已把键盘上的功能键定义为常量,即 vbKeyFX,这里的
X可以是 1到 12的值。例如。 vbKeyF5表示功能键 F5。这些常量可以在程序中使用。
Visual Basic 语 言 程 序 设 计
6.4.2 键盘事件
【 例 6.12】 编写一个程序,当按下 Alt+F5键时终止程序的运行。
【 例 6.13】 编写一个程序,测试某个功能键是否被按下。
【 例 6.14】 编写一个程序,当按下键盘上的某个键时,输出该键的 KeyCode码。
Visual Basic 语 言 程 序 设 计
6.4.3 鼠标光标的形状
6.4.4 设置鼠标光标形状
– 1.在代码中设置 MousePointer属性格式:对象,MousePointer=设置值
功能:设置光标的形状。
说明:
– (1)对象可以是窗体、列表框、图像框、图片框等。
– (2)设置值是 1~ 15中其中的一个值。
【 6.15】 编写程序,显示鼠标的形状。
上述程序运行后,把鼠标光标移到窗体内,每单击一次变换一种鼠标光标的形状,将依次显示鼠标的 15个属性。
Visual Basic 语 言 程 序 设 计
6.4.4 设置鼠标光标形状
– 2.在属性窗口中设置 MousePointer属性在属性窗口中设置 MousePointer属性的操作步骤如下:
(1)单击属性窗口的 MousePointer属性条。
(2)单击设置框右端向下的箭头,将下拉显示
MousePointer属性的 15个属性值,如图 6.25所示。
(3)单击某个属性值,即可把该值设置为当前活动对象的属性值。
– 3.自定义鼠标光标
– 4.鼠标光标形状的使用