易发久领袖的风采:vb相关知识:方法、事件、属性
来源:百度文库 编辑:中财网 时间:2024/04/29 20:29:59
vb相关知识:方法、事件、属性
2010-05-31 17:08:42| 分类: vb教案 | 标签: |字号大中小 订阅
授课题目:对象的方法与事件
教学目的:1、学习对象的常用方法与常用的响应事件。
2、学会在什么情况下使用对象的方法。
3、学会在什么情况下使用对象响应事件。
教学重点:对象事件的使用。
教学难点:同重点。
复习提问:1、图像框与图片框的区别。
2、能作为其他控件的容器的控件有哪几个。
3、所有控件共有的一个属性是哪个。
4、对象Name属性值的注意事项有哪几个。
5、按钮的default属性怎么设置,有何作用。
组织教学:师生问好
导入:由复习提问的第五问导入。
新课教学:
一、方法,方法是指对象具有的行为和能执行的动作。
(一)、Move方法:
1、Move 方法的语法:
Object.Move left,top,width,height
Move 方法的语法参数包含下列部分:
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的窗体缺省为Me。
left 必需的。单精度值,指示 object 左边的水平坐标 (x-轴)。
top 可选的。单精度值,指示 object 顶边的垂直坐标 (y-轴)。
width 可选的。单精度值,指示 object 新的宽度。
height 可选的。单精度值,指示 object 新的高度。
2、Move方法的作用
用以移动 MDIForm、Form 或控件。
3、Move方法的示例
Private Sub Form_Click ()
Dim Inch, Msg ' 声明变量。
Msg = "点击确定,看一下窗体移动前的位置与大小"
MsgBox Msg ' 显示信息。
Inch = 1440 ' 将英寸设置为缇。
Width = 4 * Inch ' 设置宽度。
Height = 2 * Inch ' 设置高度。
Left = 0 ' 将左边对准起点。
Top = 0 ' 将顶部对准起点。
Msg = "点击确定,看一下窗体移动后的位置与大小"
MsgBox Msg ' 显示信息。
Move Screen.Width - 2 * Inch, Screen.Height - Inch, 2 * Inch, Inch
End Sub
4、Move方法的用途:
(1)当在程序中让一个对象的位置改变时。
(2)当预移动一个没有标题栏的窗体时。
(3)当预改变一个对象的大小时。
(二)、Hide方法
1、Hide的语法
object.Hide
object 所在处代表一个对象的Name属性值。如果省略,那么居有焦点的当前窗体将会隐藏。
说明
隐藏窗体时,它就从屏幕上删除,并将其 Visible 属性设置为 False。 用户将无法访问隐藏窗体上的控件,但是对于运行中的 Visual Basic 应用程序,或对于通过 DDE()与该应用程序通讯的进程及对于 Timer 控件的事件,隐藏窗体的控件仍然是可用的。
窗体被隐藏时,用户只有等到被隐藏窗体的事件过程的全部代码执行完后才能够与该应用程序交互。
2、Hide的功能
用以隐藏 MDIForm 或 Form 对象,但不能使其卸载。如果调用 Hide 方法时窗体还没有加载,那么 Hide 方法将加载该窗体但不显示它。调用此方法的窗体其Visible属性自动设置为False。
3、Hide的示例
Private Sub Form_Click ()
Dim Msg ' 声明变量。
Hide ' 隐藏窗体。
Msg = "点击确定显示窗体"
MsgBox Msg ' 显示信息。
Show ' 使窗体重显。
End Sub
4、Hide方法用途
如果想要把一个窗体从屏幕中去除,但还要使用窗体上的控体的时候,就可以掉用这个方法,这个方法与Unload方法不一样。调用了Unload方法之后,窗体上控件不能再调用了。
(三)、Show方法
Show方法与Hide方法相反,把隐藏的窗体显示出来。使用的方法与Hide方法一样。运行结果与Hide相反。
说明
如果调用 Show 方法时指定的窗体没有装载,Visual Basic 将自动装载该窗体。
当 Show 在显示无模式窗体时,随后遇到的代码则要执行。当 Show 在显示模式窗体 (modal form) 时,则随后的代码直到该窗体被隐藏或卸载时才能执行。
当 Show 在显示模式窗体时,除了模式窗体中的对象之外不能进行输入(键盘或鼠标单击)。对其它窗体进行输入前程序必须隐藏或卸载模式窗体(通常是处于响应用户某些操作状态)。MDIForm 不能是形式的。
在模式窗体显示时,虽然应用程序中的其它窗体失效,但其它应用程序不会失效。
应用程序的启动窗体在其 Load 事件调用后会自动出现。
Show方法有一个可选参数,参数的值为0或者1,当参数为0时,可以被省略,显示窗体之后,继续执行后面的语句。这时显示的窗体是非模态的。非模态的窗体不会影响用户对同一程序中其他窗体的操作。当Show方法的参数为1时,显示窗体并暂停执行后面的语句,窗体是模态的。模态窗体阻止用户操作本程序中的其他窗体。只有隐藏或卸载了模态窗体之后,Show方法之后的语句才继续执行,其他的窗体才可以被使用。
(四)、Print方法
1、功能
在对象上显示文本。主要应用于Debug、窗体、UserControl等对象。
2、语法
object.Print [outputlist]
输出项可以是一个或多个任意类型的常量、变量、表达式、属性等,输出时会自动转换为字符串。多个输出项之间必须使用逗号或分号分隔。如果使用逗号,则每一项输出到不同的制表列,项与项之间有较大距离,每行显示五项数据;如果以分号分隔输入项,则项与项之间紧挨着(当输出项是数值时,只间隔一个空格)。
如果不是按标准行输出,调用Print方法输出的文字左上角坐标是由窗体或图片框当前CurrentX、CurrentY两个属性决定的。Print方法执行之后,会自动设置这两个属性的值,使它们指向下一个文本行的开头。
(五)、AddItem
1、功能
用于将项目添加到 ListBox 或 ComboBox 控件,或者将行添加到 MS Flex Grid 控件。
2、语法
object.AddItem item, index
AddItem 方法的语法包含下列部分::
object 必需的。一个对象表达式。
Item 必需的。字符串表达式,它用来指定添加到该对象的项目。这仅仅对于 MS Flex Grid 控件,才能使用 tab字符(字符代码 09)分隔将要插入到新添加行中每列的多重字符串。
Index 可选的。是整数,它用来指定新项目或行在该对象中的位置。对于 ListBox 或 ComboBox 控件的首项,或者对于 MS Flex Grid 控件的首行,index 为 0。
说明
如果所给出的 index 值有效,则 item 将放置在 object 中相应的位置。如果省略 index,当 Sorted 属性设置为 True 时,item 将添加到恰当的排序位置,当 Sorted 属性设置为 False 时, item 将添加到列表的结尾。
绑定到 Data 控件的 ListBox 或 ComboBox 控件不支持 AddItem 方法。
3、例子
本示例使用 Addltem 方法增加 100 项给一个列表框。此例需要一个以 List1 的 命名的ListBox 控件,和他的窗体。
Private Sub Form_Click ()
Dim Entry, I, Msg ' 声明变量。
Msg = "Choose OK to add 100 items to your list box."
MsgBox Msg ' 显示信息。
For I = 1 To 100 ' 计数值从 1 到 100。
Entry = "Entry " & I ' 创建输入项。
List1.AddItem Entry ' 添加该输入项。
Next I
Msg = "Choose OK to remove every other entry."
MsgBox Msg ' 显示信息。
For I = 1 To 50 ' 确定如何
List1.RemoveItem I ' 每隔一项
Next I ' 删除。
Msg = "Choose OK to remove all items from the list box."
MsgBox Msg ' 显示信息。
List1.Clear ' 清除列表框。
End Sub
(六)、RemoveItem
1、功能
用以从 ListBox 或 ComboBox 控件中删除一项,或从 MS Flex Grid 控件中删除一行。
2、语法
object.RemoveItem index
RemoveItem 方法的语法包含下列部分:
object 必需的。一个对象表达式,其值为“应用于”列表中的一个对象。
index 必需的。一个整数,它表示要删除的项或行在对象中的位置。对于 ListBox 或 ComboBox 中的首项或 MS Flex Grid 控件中的首行,index = 0。
说明
被绑定到 Data 控件的 ListBox 或 ComboBox 不支持 RemoveItem 方法。
(七)、Clear方法
1、功能
用于清除 ListBox,ComboBox 或系统剪贴板的内容。
2、语法
object.Clear
object 所在处代表一个对象表达式。
说明
绑定到 Data 控件的 ListBox 或 ComboBox 控件不支持 Clear 方法。
(八)、SetFocus方法
1、功能
将焦点移至指定的控件或窗体。
2、语法
object.SetFocus
(九)、Cls
1、功能
清除运行时 Form 或 PictureBox 所生成的图形和文本。
2、语法
object.Cls
object 所在处代表一个对象表达式。如果省略 object,则带有焦点的 Form 就被认为是 object。
说明
Cls 将清除图形和打印语句在运行时所产生的文本和图形,而设计时在 Form 中使用 Picture 属性设置的背景位图和放置的控件不受 Cls 影响。如果激活 Cls 之前 AutoRedraw 属性设置为 False, 调用时该属性设置为 True,则放置在 Form 或 PictureBox 中的图形和文本也不受影响。 这就是说,通过对正在处理的对象的 AutoRedraw 属性进行操作,可以保持 Form 或 PictureBox 中的图形和文本。
调用 Cls 之后,object 的 CurrentX 和 CurrentY 属性复位为 0。
(十)Refresh
1、功能
强制全部重绘一个窗体或控件。
2、语法
object.Refresh
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
3、示例
本例在创建测试文件时使用 Refresh 方法更新 FileListBox 控件。
Private Sub Form_Click ()
' 声明变量。
Dim FilName, Msg as String, I as Integer
File1.Pattern = "TestFile.*" ' 设置文件模式。
For I = 1 To 8 ' 执行八次。
FilName = "TESTFILE." & I
' 建立空文件。
Open FilName For Output As FreeFile
File1.Refresh ' 刷新文件列表框。
Close ' 关闭文件。
Next I
Msg = "Choose OK to remove the created test files."
MsgBox Msg ' 显示消息。
Kill "TESTFILE.*" ' 删除测试文件。
File1.Refresh ' 更新文件列表框。
End Sub
4、在下列情况下使用 Refresh 方法:
在另一个窗体被加载时显示一个窗体的全部。
更新诸如 FileListBox 控件之类的文件系统列表框的内容。
更新 Data 控件的数据结构。
Refresh 方法不能用于 MDI 窗体,但能用于 MDI 子窗体。不能在 Menu 或 Timer 控件上使用 Refresh 方法。
通常,如果没有事件发生,窗体或控件的绘制是自动处理的。但是,有些情况下希望窗体或控件立即更新。例如,如果使用文件列表框、目录列表框或者驱动器列表框显示当前的目录结构状态,当目录结构发生变化时可以使用 Refresh 更新列表。
可以在 Data 控件上使用 Refresh 方法来打开或重新打开数据库(如果 DatabaseName, ReadOnly, Exclusive 或 Connect 属性的设置值发生改变),并能重建控件的 Recordset 属性内的 dynaset。
二、事件
事件是指对象能够识别并能做出反应的外部刺激。
(一)、Click()事件
此事件是在一个对象上按下然后释放一个鼠标按钮时发生。它也会发生在一个控件的值改变时。
对一个 Form 对象来说,该事件是在单击一个空白区或一个无效控件时发生。对一个控件来说,这类事件的发生是当:
用鼠标的左键或右键单击一个控件。对 CheckBox, CommandButton, Listbox 或 OptionButton 控件来说,Click 事件仅当单击鼠标左键时发生。
通过按下箭头键或者单击鼠标按钮,对 ComboBox 或 ListBox 控件中的项目进行选择。
当 CommandButton,OptionButton 或 CheckBox 控件具有焦点时,按下 SPACEBAR 键。
当窗体带有其 Default 属性设置为 True 的 CommandButton 控件时,按下 ENTER 键。
当窗体带有一个 Cancel 按钮 — 其 Cancel 属性设置为 True 的 CommandButton 控件时,按下 ESC 键。
对控件按下一个访问键。例如,如果一个 CommandButton 控件的标题是 "&Go",则按下 ALT+G 键可触发该事件。
也可在代码中触发 Click 事件,通过:
将一个 CommandButton 控件的 Value 属性设置为 True。
将一个 OptionButton 控件的 Value 属性设置为 True。
改变一个 CheckBox 控件的 Value 属性的设置。
1、功能
当单击鼠标左键或者满足启动单击事件条件时,启动单击事件。
2、语法
Private Sub Form_Click( )
Private Sub object_Click([index As Integer])
Click 事件的语法包括下列部分:
object 一个对象表达式,其值是“应用于”列表中的一个对象。
index 一个整数,用来唯一地标识一个在控件数组中的控件。
通常,将一个 Click 事件过程附加到一个 CommandButton 控件,Menu 对象或 PictureBox 控件上用来执行命令或类似命令的操作。对其它可应用的控件来说,使用这个事件来触发一个动作以响应控件中的变化。
可用一个控件的 Value 属性从代码中测试该控件的状态。单击一个控件除了产生 Click 事件以外还可产生 MouseDown 和 MouseUp 事件。这三种事件发生的顺序根据控件的不同而不同。例如,对 ListBox 和 CommandButton 控件来说,这些事件按下列顺序发生:MouseDown、Click、MouseUp。但对 FileListBox,Label 或 PictureBox 控件来说,这些事件按下列顺序发生:MouseDown、MouseUp 和 Click。当给这些相关的事件附加事件过程时,要确保它们的操作不互相冲突。如果在应用程序中事件发生的顺序是重要的,则应对控件进行测试以确定事件的顺序。
注意 为区别鼠标的左、中、右按钮,应使用 MouseDown 和 MouseUp 事件。
如果在 Click 事件中有代码,则 DlbClick 事件将永远不会被触发,因为 Click 事件是两个事件中首先被触发的事件。其结果是鼠标单击被 Click 事件截断,从而使 DblClick 事件不会发生。
3、示例
在本例中,对窗体添加了两个事件,一个是单击事件,一个是双击事件。如果这两个事件添加上之后,无论怎么点都启动不了双击事件。
Private Sub Form_Click()
MsgBox "启动了单击事件。"
End Sub
Private Sub Form_DblClick()
MsgBox "启动双击事件"
End Sub
(二)DblClick()事件
1、触发条件
当在一个对象上按下和释放鼠标按钮并再次按下和释放鼠标按钮时,该事件发生。
对于窗体而言,当双击被禁用的控件或窗体的空白区域时,DblClick 事件发生。对于控件而言,DblClick 事件在以下情形下发生:
用鼠标左键双击控件。
双击 Style 属性设置为 1(Simple) 的 ComboBox 控件中的项目,或者在 FileListBox 、 ListBox 、 DataCombo或 DataList控件中的项目。
2、语法
Private Sub Form_DblClick ( )
Private Sub object_DblClick (index As Integer)
object 对象表达式,其值是“应用于”列表中的一个对象。
index 如果控件在控件数组内,则这个 index 值就用来标识该控件。
如果控件在一个控件数组内,则这个 Index 参数唯一地标识这个控件。可以使用 DblClick 事件过程执行一个隐式操作,如双击图标来打开一个窗口或文档。也可用这类过程执行单一操作的多个步骤,例如用双击在列表框中选定一项并关闭对话框。
要在 Visual Basic 中产生这类快捷效果,可以使用带有缺省按钮的列表框的或叠层排列文件列表框的 DblClick 事件过程;所谓缺省按钮就是 Default 属性设置为 True 的 CommandButton 控件。作为列表框 DblClick 事件过程的一部分,只需简单调用缺省按钮的 Click 事件。
对于那些接收 Mouse 事件的对象,事件按这样的次序发生:MouseDown, MouseUp, Click, DblClick 和 MouseUp。
如果 DblClick 在系统双击时间限制内没有出现,则对象识别另一个 Click 事件。双击时间限制可以变化,因为用户可在控制面板设置双击速度。当与这些相关事件过程打交道时,必须确保它们的活动不发生冲突。不接受 DblClick 事件的控件可能接受两次单击而不是 DblClick 事件。
调试事件时,不要使用 MsgBox 语句显示事件何时发生,因为这样做将会干扰许多事件的正常功能。(例如,Click 事件中的 MsgBox 将会阻止 DblClick 事件的发生。) 而应该用 Debug.Print 来显示事件发生的顺序。
注意 要想区别鼠标的左、右、中按钮,使用 MouseDown 和 MouseUp 事件。
3、示例
如Click()中的例子。
(三)、Resize()
1、触发条件
当对象的大小发生改变时,或窗体刚刚显示时,会引发对象或窗体的Resize事件。
2、语法
Private Sub Form_Resize( )
Private Sub object_Resize()
3、示例
本例让你只要你改变了窗体的大小,窗体就重新改回宽1000缇高3000缇的大小。
Private Sub Picture1_Resize()
height = 3000
width = 1000
End Sub
(四)、Load()事件
1、触发条件
此事件是在一个窗体被装载时发生。当使用 Load 语句启动应用程序,或引用未装载的窗体属性或控件时,此事件发生。
2、语法
Private Sub Form_Load( )
Private Sub MDIForm_Load( )
3、用途
窗体的load事件,通常可以为窗体显示前,对窗体进行设置,例如,可以把某些暂时不用的控件隐藏,为列表框或组合框加载数据项或移除数据项。
4、示例
Private Sub Form_Load ()
Combo1.AddItem "Mozart" ' 向列表中添加项。
Combo1.AddItem "Beethoven"
Combo1.AddItem "Rock 'n Roll"
Combo1.AddItem "Reggae"
Combo1.ListIndex = 2 ' 设置缺省选择。
End Sub
(五)、Change事件
1、触发条件
当一个控件的内容改变时发生。此事件如何和何时发生则随控件的不同而不同:
(1)、ComboBox - 改变控件的文本框部分的正文。该事件仅在 Style 属性设置为 0(下拉 Combo)或 1(简单 Combo)和正文被改变或者通过代码改变了 Text 属性的设置时才会发生。
(2)、DirListBox - 改变所选择的目录。该事件在双击一个新的目录或通过代码改变 Path 属性的设置时发生。
(3)、DriveListBox - 改变所选择的驱动器。该事件当选择一个新的驱动器或通过代码改变 Drive 属性的设置时发生。
(4)、HScrollBar 和 VScrollBar(水平和垂直滚动条) - 移动滚动条的滚动框部分。该事件在进行滚动或通过代码改变 Value 属性的设置时发生。
(5)、Label - 改变 Label 的内容。即Caption属性发生改变时。
(6)、PictureBox - 改变 PictureBox 的内容。即Picture属性发生改变时。
(7)、TextBox - 改变文本框的内容。即Text属性发生改变时。
2、语法
Private Sub object_Change([index As Integer])
Change 事件语法包括下列部分:
object 一个对象表达式,其值是“应用于”列表中的一个对象。
index 一个整数,用来唯一地标识一个在控件数组中控件。
3、示例
Private Sub Form_Load ()
HScroll1.Min = 0 ' 设置最小值。
HScroll1.Max = 1000 ' 设置最大值。
HScroll1.LargeChange = 100 ' 设置 LargeChange.
HScroll1.SmallChange = 1 ' 设置SmallChange.
End Sub
Private Sub HScroll1_Change ()
Text1.Text = HScroll1.Value
End Sub
(六)、Scoll()事件
1、触发条件
当 ScrollBar 控件上的或包含一个滚动条的对象的滚动框被重新定位,或按水平方向或垂直方向滚动时,此事件发生。
2、语法
Private Sub object_Scroll( )
3、用途
可用此事件进行计算或操纵必须与滚动条中所进行的变动同步的控件。反之,当在 ScrollBar 控件变动之后想让更新只出现一次,可使用 Change 事件。
注意 在此事件中应避免使用 MsgBox 语句或函数。
4、示例
可以将代码粘贴到包含一个 Shape 控件、一个 Label 控件和一个 HScrollBar 控件窗体的声明部分。将 Shape 控件 Index 属性设置为 0 以创建一个控件数组。
Private Sub Form_Load()
' 移动第一个 Shape 控件并其大小。
Shape1(0).Move HScroll1.Left, HScroll1.Top * 1.5, HScroll1.width, HScroll1.height
Label1.Caption = "" ' 设置 Label 的标题。
Load Shape1(1) ' 创建第二个Shape。
' 移动第二个Shape控件并定制其大小。
Shape1(1).Move Shape1(0).Left, Shape1(0).Top, 1, Shape1(0).height
Shape1(1).BackStyle = 1 '设置BackStyle为Opaque。
Shape1(1).Visible = True ' 显示第二个Shape。
HScroll1.Min = 1 ' 设置滚动条的值。
HScroll1.Max = HScroll1.width
End Sub
Private Sub HScroll1_Change()
Label1.Caption = "Changed" ' 显示改变后的信息。
End Sub
Private Sub HScroll1_Scroll()
Shape1(1).BackColor = &HFF0000 ' 设置Shape的颜色为蓝色。
Label1.Caption = "Changing" ' 显示滚动时的信息。
Shape1(1).width = HScroll1.Value ' 按Scroll Value调整Shape的尺寸。
End Sub
(七)、ItemCheck事件
1、触发条件
这个事件只发生在ListBox控件上。当 ListBox 控件的 Style 属性设置为 1(复选框),并且 ListBox 控件中一个项目的复选框被选定或者被清除时该事件发生。
2、语法
Private Sub object_ItemCheck([index As Integer])
object 一个对象表达式,其值是“应用于”列表中的一个对象。
index 一个整数,唯一地标识该列表框中被选中的项。
注意 ItemCheck 事件在列表项目为突出显示时并不出现;确切地说,它是在该列表项目的复选框被选定或者被清除时出现。
每当 ListBox 的被选择数组中的元素改变(并且其 Style 属性设置为 1)时,ItemCheck 事件也能有计划地出现。
ItemCheck 事件出现在 Click 事件之前。
试图用 ListBox 控件的 ItemCheck 事件中的 Unload Me 下载一个窗体导致一般性保护出错 (GPF),例如:
Private Sub Form_Load()
Dim i%
For i = 0 To 20
List1.AddItem i
Next i
End Sub
Private Sub List1_ItemCheck(Item As Integer)
Unload Me
End Sub
如果按下空格键,或试图使用CommandButton 在 ListBox 中选择一项时,该示例也会产生 GPF。
建议通过将 Unload 语句添加入 CommandButton 或 Menu 控件的Click 事件的步骤来下载窗体。
(八)、GotFocus()事件
1、触发条件
当对象获得焦点时产生该事件;获得焦点可以通过诸如 TAB 切换,或单击对象之类的用户动作,或在代码中用 SetFocus 方法改变焦点来实现。
2、语法
Private Sub Form_GotFocus( )
Private Sub object_GotFocus([index As Integer])
object 一个对象表达式。
index 一个整数,用来唯一地标识一个在控件数组中的控件。
3、示例
略,临场发挥吧。
4、用途
当某些控件得到焦点时预给出提示,或是在给出某些功能时,就要用到此事件。
(九)、LostFocus()
1、触发条件
此事件是在一个对象失去焦点时发生,焦点的丢失或者是由于制表键移动或单击另一个对象操作的结果,或者是代码中使用 SetFocus 方法改变焦点的结果。
2、语法
Private Sub Form_LostFocus( )
Private Sub object_LostFocus([index As Integer])
object 一个对象表达式,其值是“应用于”列表中的一个对象。
index 一个整数,它用来唯一地标识一个在控件数组中的控件。
LostFocus 事件过程主要是用来对更新进行验证和确认。使用 LostFocus 可以在焦点移离控件时引进确认。这类事件过程的另一种用途与在 GotFocus 事件过程中的应用类似,可以隐藏、显示其它对象或者使它们有效或无效。也可使设置在该对象的 GotFocus 事件过程中的条件取反或对其进行更改。
3、示例
本例演示了在 TextBox 获得或失去焦点(用鼠标或 TAB 键选择)时,改变颜色,并在 Label 控件中显示适当的文字。
窗体 包含 2 个 TextBox 控件和一个 Label,在代码窗口中加入以下代码,然后按 F5 键并在 Text1 和 Text2 之间移动焦点。
Private Sub Text1_GotFocus ()
' 将焦点用红色显示.
Text1.BackColor = RGB(255, 0, 0)
Label1.Caption = "Text1 has the focus."
End Sub
Private Sub Text1_LostFocus ()
' 用蓝色显示失去焦点.
Text1.BackColor = RGB(0, 0, 255)
Label1.Caption = "Text1 does’t have the focus。"
End Sub
(十)、Unload()事件
1、触发条件
当窗体从屏幕上删除时发生。当那个窗体被重新加载时,它的所有控件的内容均被重新初始化。当使用在 Control 菜单中的 Close 命令或 Unload 语句关闭该窗体时,此事件被触发。
2、语法
Private Sub object_Unload(cancel As Integer)
Unload 事件语法包括下列部分:
部分 描述
Object 一个对象表达式,其值是“应用于”列表中的一个对象。
Cancel 一个整数,用来确定窗体是否从屏幕删除。如果 cancel 为 0,则窗体被删除。将 cancel 设置为任何一个非零的值可防止窗体被删除。
将 cancel 设置为任何非零的值可防止窗体被删除,但不能阻止其它事件,诸如从 Microsoft Windows 操作环境中退出等。可用 QueryUnload 事件阻止从 Windows 中的退出。
在窗体被卸载时,可用一个 Unload 事件过程来确认窗体是否应被卸载或用来指定想要发生的操作。也可在其中包括任何在关闭该窗体时也许需要的验证代码或将其中的数据储存到一个文件中。
QueryUnload 事件在 Unload 事件之前发生。Unload 事件在 Terminate 事件之前发生。使用 Unload 语句或在一个窗体的“控件”菜单上选择“关闭”命令,用“任务窗口”列表上的“结束任务”按钮退出应用程序,在当前窗体为其一个子窗体的情况下关闭该 MDI 窗体,或当应用程序正在运行的时候退出 Microsoft Windows 操作环境等情况都可引发 Unload 事件。
3、示例
略
(十一)、Initialize()事件
1、触发条件
当应用程序创建 Form、MDIForm、User 控件、Property Page Webclass、DHTML Page Designer或类的实例时发生。
2、语法
Private Sub object_Initialize( )
如下情况触发 Initialize 事件:
用 CreateObject 函数创建类的一个实例,如:
Set X = CreateObject("Project1.MyClass")
引用窗体或类实例的属性或事件,该属性或事件由用户代码自动创建。
MyForm.Caption = "Example"
应用此事件初始化 Form、MDIForm、或类所用的数据。对 Form 或 MDIForm,Initialize 事件在 Load 事件之前发生。
3、示例
略
(十二)、鼠标与键盘事件
1、触发条件
当按了鼠标与键盘上的某个键时触发。
2、语法
(1)Private Sub Object_MouseDown(button as Integer,Shift As Integer,X As Single,Y As Single)
(2)Private Sub Object_MouseUP(button as Integer,Shift as Integer,X as Single,Y as Single)
(3)Private Sub Object_MouseMove(button as Integer,Shift As Integer,X As Single,Y As Single)
(4)Private Sub Object_KeyDown(KeyCode as Integer,Shift as Integer)
(5)Private Sub Object_KeyUp(KeyCode as Integer,Shift as Integer)
(6)Private Sub Object KeyPress(KeyAscii As Integer)
这几个事件过程与以上的事件过程最大的不同是它们都具有参数。这些参数的主要意义主要是:
(1)、Button参数
Button表示鼠标按下的是哪个键:1表示左键,2表示右键,4表示中键。
(2)、Shift参数
此参数是一个整数,它表明了在鼠标事件发生的时候,键盘上哪一个控制键被按下:1表示Shift键;2表示Ctrl键;4表示Alt键。
(3)、X与Y参数
这两个参数表示当事件发生时,鼠标指针热点所处位置的坐标。默认情况下,这个坐标的原点在引发事件对象的左上角。
(4)、KeyCode参数
这个参数是一个整型参数,表示按键的代码。每一个按键都有相应的键代码。键盘上每个键的代码详见附录。见教材。
(5)、KeyAscii参数
这个参数传递的是按键字符的ASCII码。
注意:(1)、当一个控件不可见或无效时,针对它的鼠标操作会传递到位于它下面的对象上。
(2)、窗体有KeyPreview属性,当此属性被设置为True时,窗体先于该窗体上的控件接收到键盘事件。可以利用该属性编制窗体的键盘处理程序。例如,应用程序使用功能键时,只需要在窗体级处理击键,而不应为每个可以接收击键事件的控件编写程序。
(3)、当窗体处理完键盘事件以后,控件还会接收到键盘事件。如果只在窗体级处理键盘事件,而不允许控件接收键盘事件,只需要在窗体的KeyDown事件过程中设置KeyCode为0即可。
(4)、一些控件能够拦截键盘事件,以致于窗体不能接收它们。这些控件主要有:按钮类控件有焦点时按回车键以及焦点在列表框控件上时按方向键。
(5)、SendKeys语句向当前活动的窗体(或它上面拥有焦点的控件)发送一个或一串击键消息,窗体(或控件)会得到相应的键盘事件,如同真正敲击键盘一样。此语句的语法为:
SendKeys 字符串
其中“字符串”包含的就是发送的按键。例如:
SendKeys “ABC”
SendKeys “{F4}”
3、示例
略
小结:本节主要学习了对象的主要方法与事件,这些事件与方法是编程经常要用到的,所以一定要掌握。请复习。
习题:
一、选择题(每空一分)
1、对Move方法的描述不正确的是: ( )
A、Move方法有四个参数,在使用的时,可以省略后两个,前两个不可以省略。
B、Move方法有四个参数,在使用的时,后三个参数都可以省略。
C、Move方法的四个参数全是数值表达式,参数的单位是缇。
D、Move方法不但可以把对象的位置改变,也可以把对象的大小改变。
2、Move方法不可以应用到以下哪个控件: ( )
A、窗体对象 B、Timer对象 C、按钮对象 D、文本框
3、对于Hide方法,描述不正确的是: ( )
A、Hide方法可以用于窗体与各种控件。
B、Hide方法只能用于窗体上。
C、当Hide方法执行之后,Visible属性转为False。
D、Hide方法执行后,窗体并不被清除内存,程序还可以访问窗体上的控件。
4、对于Show方法,说法不正确的是: ( )
A、Show方法用于窗体,不可以用于其他控件。
B、Show方法调用时,窗体如果还没有装载,程序将自动装载该窗体。
C、Show方法与Hide方法相反,没有调用Hide,就不可以调用Show方法。
D、Show方法有一个可选参数,参数只可以接受0或者1。
5、对Print方法,下面方法正确的是: ( )
A、Print方法只能用于窗体对象。
B、Print方法显示的文本可以用逗号与分号分隔,作用是一样的。
C、Print方法只能显示文本,不能显示其他数据。
D、Print方法能显示文本,也能显示数字,显示数字时,用分号分隔时显示有一个空格。
6、以下哪个语句是正确的: ( )
A、 ListBox1,AddItem “添加项”,0 ‘ListBox1是一个列表框。
B、From1.AddItem “添加项”,0 ‘From1是一个窗体。
C、Text1.AddItem “添加项”,0 ‘Text1是一个文本框。
D、ComboBox1.AddItem “添加项”,0 ‘ComboBox1是一个组合框
7、Clear方法的作用下列说法正确的是: ( )
A、Clear方法用于清除ListBox、ComboBox或系统剪贴板的内容。
B、Clear方法用于清除窗体上显示的数据。
C、Clear方法执行后,ComboBox框中的选择项,只剩下了文本框里显示的一项。
D、Clear方法不可以用于组合框。
8、SetFocus方法的主要作用是: ( )
A、给一个控件设置一个焦点。 B、把控件改变成焦点
C、把控件成为当前控件 D、让控件失去焦点
9、以下哪个选项不可以启动按钮的Click()事件: ( )
A、用鼠标左键点击按钮。
B、按钮的Default属性设置为True,当包含这个按钮的窗体为当前窗体,按回车键。
C、按钮的Cancel属性设置为True,当包含这个按钮的窗体为当前窗本,按ESC键。
D、按钮的Value属性设置为Click时。
10、关于单击事件Click()与DblClick()事件的说法正确的是: ( )
A、对于一个控件,如果填加了这两个事件,则,DblClick()事件不会起作用。
B、对于一个控件,如果填加了这两个事件,则,Click()事件不会起作用。
C、右键不能启动一个控件的单击事件。
D、窗体控件支持单击事件,但是不支持双击事件。
11、对于Resize()事件,以下说法正确的是: ( )
A、当控件的尺寸改变时,触发Resize()事件。 B、Resize()事件是重新定义控件尺寸的。
C、所有控件都支持Resize()事件。 D、Resize()事件只能用于窗体上。
12、如果想要在一个窗体显示之前,规划窗体上的控件,那么要用到的事件是: ( )
A、Click()事件 B、DblClick()事件 C、Load()事件 D、UnLoad()事件。
13、Load()事件可以用在以下什么控件上: ( )
A、窗体与图片框上 B、所有控件上 C、只用在窗体上 D、只用在图片框上
14、如果窗体上有一个文本框,当输入文本框的数定大于是100时给出提示,要用到哪种事件: ( )
A、Click()事件 B、DblClick()事件 C、Load()事件 D、Change()事件
15、Change()事件可以用在以下哪个控件上: ( )
A、组合框与文本框 B、组合框与窗体 C、窗体与滚动条 D、图像框与单选框
16、Scoll()事件只有在有滚动条的控件的滚动条滚动时才被触发,那么以下说话正确的是:
( )
A、水平滚动条滚动时触发 B、垂直滚动条滚动时触发
C、两个滚动条同时滚动时触发 D、水平与垂直滚动条都可以触发
17、以下哪些动作不可以触发GotFocus()事件 ( )
A、当一个控件失去焦点的时候。 B、当一个控件得到焦点的时候。
C、在程序动行时用鼠标左键单击控件时。 D、用TAB切换控件焦点的时候。
18、对于窗体的Initialize()事件与Load()事件,以下说法不正确的是: ( )
A、这两个事件是同时触发的。 B、Initialize()先于Load()事件触发。
C、窗体从没有被调用到被调用要触发这两个事件。
D、load()事件是窗体的默认事件。
19、对于鼠标的事件,有一个名为Button的参数,其参数的意义是: ( )
A、表示一个按钮。 B、表示鼠标上的一个按键。
C、表示键盘上的一个按键。 D、表示一个钮扣。
20、当鼠标事件的Button参数为4时,表示: ( )A、按了鼠标的左键 B、按了鼠标的中键。
C、按了鼠标的右键。 D、按了键盘上的4键。
21、对于鼠标的事件,有一个Shift参数,其参数的意义是: ( )
A、表示一个按钮。 B、表示按了鼠标的哪个键。
C、表示按了键盘上哪一个控制键。 D、表示按了键盘上的Shift键。
22、如果预让鼠标的左右两键同时按下时发生鼠标的MouseMove事件,那么这个事件的Button参数应该取: ( )
A、1 B、2 C、3 D、4
23、当一个控件不可见或无效时,针对它的鼠标操作: ( )
A、仍然起作用 B、传递到位于它下面的对象上。
C、不起作用了,也不会传递给其他对象。 D、直接传递到对象所在的窗体上。
24、如果在一个程序关闭前,询问用户是否关闭,最好使用什么事件: ( )
A、QueryUnload()事件。 B、Unload()事件
C、Terminate()事件。 D、QueryClose()事件
简答题(每题5分)
1、Show方法有一个参数,参数值只能接受0或者1两个数,请问参数为0与1的区别。
2、请简述Cls与Clear方法的