'自定义 Form1 的方法。
Public Sub LateJobsCount ()
.
. ' <statements>
.
End Sub
可用下面这个语句从其它模块调用 LateJobsCount 过程:
Form1.LateJobsCount
创建窗体的新属性就像在窗体模块中声明一个公用变量那样简单:
Public IDNumber As Integer
可用下面两个语句从其它模块设置和返回 Form1 的 IDNumber 值:
Form1.IDNumber = 3
Text1.Text = Form1.IDNumber
也可用 Property 过程向窗体添加自定义属性。
详细信息 第九章“用对象编程”提供了 Property 过程的详细材料。
注意 不必加载窗体就可调用窗体的变量或自定义方法,还可设置窗体的自定义属性。于是,不必将窗体加载到内存就可运行有关窗体的代码。同样,引用控件而不引用其属性或方法时也不会加载窗体。
使用 New 关键字 用 New 关键字创建新对象,这个对象被视为它的类所定义的对象。可用New 创建集合、窗体的实例以及类模块中定义的类。
在窗体上使用 New 关键字
在设计时创建的窗体是类。可用 New 关键字创建这个类的新实例。为了看到这一工作过程,请在窗体上画出一个命令按钮和其它几个控件。在“属性”窗口中将窗体的 Name 属性设置成 Sample。在命令按钮的 Click 事件过程中添加下列代码:
Dim x As New Sample
x.Show
运行应用程序,并单击命令按钮数次。把最前面的窗体移到一边。因为窗体是具有可视界面的类,所以可看到附加副本。每个窗体在相同位置上都有相同控件,而且这些位置也正是窗体在设计时的位置。
注意 要使窗体变量和已加载窗体的实例一直存在,请用 Static 或 Public变量,而不要用局部变量。
也可将 New 关键字与 Set 语句并用。请试用命令按钮的 Click 事件过程中的代码:
Dim f As Form1
Set f = New Form1
f.Caption = "hello"
f.Show
将 New 关键字和 Set 语句并用会加快运行速度,因此,这种方法值得推荐。
对其它对象使用 New 关键字
可用 New 关键字从类模块中定义的类创建集合和对象。试用下例说明这一工作过程。
此例说明了 New 关键字是如何创建类的实例的。打开新工程,在 Form1 上画出一个 CommandButton 控件。从“工程”菜单中选择“添加类模块”命令,从而在工程中添加一个类模块。设置类模块的 Name 属性为ShowMe 。
Form1 中的下列代码创建了类 ShowMe 的新实例,还调用了包含在类模块中的过程。
Public clsNew As ShowMe
Private Sub Command1_Click ()
Set clsNew = New ShowMe
clsNew.ShowFrm
End Sub
类模块中的 ShowFrm 过程创建类 Form1 的新实例,显示窗体,然后使其最小化。
Sub ShowFrm ()
Dim frmNew As Form1
Set frmNew = New Form1
frmNew.Show
frmNew.WindowState = 1
End Sub
为了应用这个例子,请运行应用程序并单击命令按钮数次。在创建 ShowMe类的每一个新实例时将看到最小化的窗体图标出现在桌面上。
释放对对象的引用
每个对象都使用内存和系统资源。当不再使用对象时及时释放这些资源,这是良好的编程习惯。
用 Unload 从内存中卸载窗体或控件。
用 Nothing 释放对象变量占用的资源。用 Set 语句将 Nothing 赋予对象变量。
给过程传递对象
可在 Visual Basic 中将对象传递给过程。在下面的代码例子中假定窗体中有一 CommandButton 控件:
Private Sub Command1_Click ()
'调用 Demo 子过程,并将窗体传递给它。
Demo Form1
End Sub
Private Sub Demo (x As Form1)
'在屏幕中使窗体居中。
x.Left = (Screen.Width - x.Width) / 2
End Sub
可以通过引用把对象传递给参数,然后在过程内将参数设置成新对象。为了看到这一工作过程,打开工程并插入第二个窗体。在每个窗体中安放一个图片框。
Form1_Click 事件过程调用 Form2 中的 GetPicture 过程,并把一个空的图片框传递给它。
Private Sub Form_Click ()
Form2.GetPicture Picture1
End Sub
Form2 中的 GetPicture 过程把 Form2 上的图片框的 Picture 属性赋予Form1 上的空图片框。
Private objX As PictureBox
Public Sub GetPicture (x As PictureBox)
'将传递进来的图片框赋予对象变量。
Set objX = x
'将 Picture 属性值赋予 Form1 的图片框。
objX.Picture = picture2.Picture
End Sub
为了应用这个例子,请运行程序并单击 Form1。在 Form1 的图片框中将看到出现了 Form2 中的图标。
上一页 [1] [2]
责任编辑:小草