日期:2013-07-02  浏览次数:20493 次

用VB.NET打造NameSpace
(王天 2001年11月05日 18:53)

自从微软公司发布了.Net 框架过以后,作为.Net中的一个重要程序开发语言--VB.NET,就开始让那些以前对VB有偏见的人大吃一惊。虽然说VB.NET是VB的一个后继版本,但二者之间的差别是十分巨大的。以前版本的VB虽然号称自己是一种OOP(面向对象)编程语言,但却不是一个地地道道的OOP编程语言,最多只是半个面向对象的编程语言。实际上他是一种面向事件的编程语言。正是由于此种原因,所以以前的VB在功能上是相对较弱的。但自从微软推出VB.NET以后,这种情况就大为改变,VB.NET已经是一种完全的面向对象的编程语言。在他之中支持面向对象的基本特征:继承、多态和重载。这使得以前在VB中很难或根本实现不了的问题,在VB.NET中可以顺利、简便的实现。
微软公司推出的.Net FrameWork SDK是专门为.Net程序开发语言提供的一个内容庞大的软件开发包。其中基本元素就是名称空间(NameSpace),名称空间实质上是一个大的类库(Class Library)。在其中定义了许多的类、对象、属性和方法。.Net开发语言就是依靠些类、对象、属性和方法来丰富自己的界面,实现软件的强大功能。其实也可以这样说,只有掌握了这些名称空间,.Net 开发工具(这当中必定包括VB.NET)才能可以最大程度发挥自身强大功能。那我们是否可以依靠自己的开发工具来做一个自己的名称空间?本文中就是介绍如何利用.Net开发工具中的一种--VB.NET,来打造一个属于自己的名称空间。介绍的顺序是:
(1)用VB.NET创建一个WinForm应用程序。
(2)把这个WinForm程序转变成一个名称空间,此名称空间中有一个定义好的类。这个类就是此WinForm,这是本文的关键所在。
(3).再用VB.NET创建一个WinForm程序,继承上面名称空间中的类,并构件自己的Form界面。此段落主要是测试我们刚建立的名称空间。
下面就安装上述步骤来一步一步的建立属于自己的名称空间。
一.程序设计和运行的环境
(1)微软公司视窗2000专业版本
(2).Net FrameWork SDK Beta 2
二. 用VB.NET创建一个WinForm应用程序。
对于如何用VB.NET创建一个WinForm的应用程序,可以参考本站的一篇文章《用VB.NET做WinForm的应用程序》,在文章中有比较详细的介绍。本文就利用一个已经建立好的VB.NET的WinForm程序做例子,下面是此WinForm应用程序的运行界面和源代码:
(1).源代码(app.vb):

Imports System.Drawing
Imports System.Windows.Forms
Imports System.ComponentModel
Public Class Form2
Inherits Form

Public Sub New ( )
MyBase.New ( )
InitializeComponent ( )
End Sub


Private components As System.ComponentModel.Container
Protected cancel As Button
Private LastName As TextBox
Private FirstName As TextBox
Private Label2 As Label
Private Label1 As Label
Protected ok As Button

Dim Form2 As Form

Private Sub InitializeComponent ( )
Me.Label1 = New Label ( )
Me.FirstName = New TextBox ( )
Me.ok = New Button ( )
Me.Label2 = New Label ( )
Me.LastName = New TextBox ( )
Me.cancel = New Button ( )
Me.SuspendLayout ( )
'
Me.Label1.Location = New Point ( 8 , 24 )
Me.Label1.Name = "Label1"
Me.Label1.TabIndex = 1
Me.Label1.Text = "姓名:"

Me.FirstName.Location = New Point ( 120 , 16 )
Me.FirstName.Name = "name"
Me.FirstName.Size = New Size ( 136 , 20 )
Me.FirstName.TabIndex = 3
Me.FirstName.Text = ""

Me.ok.Location = New Point ( 8 , 128 )
Me.ok.Name = "ok"
Me.ok.Size = New Size ( 112 , 32 )
Me.ok.TabIndex = 0
Me.ok.Text = "确定"

Me.Label2.Location = New Point ( 8, 48 )
Me.Label2.Name = "Label2"
Me.Label2.Size = New Size ( 88 , 16 )
Me.Label2.TabIndex = 2
Me.Label2.Text = "邮箱:"

Me.LastName.Location = New Point ( 120, 40 )
Me.LastName.Name = "mail"
Me.LastName.Size = New Size ( 136 , 20 )
Me.LastName.TabIndex = 4
Me.LastName.Text = ""

Me.cancel.Location = New Point ( 144 , 128 )
Me.cancel.Name = "cancel"
Me.cancel.Size = New Size ( 112 , 32 )
Me.cancel.TabIndex = 5
Me.cancel.Text = "取消"

Me.AutoScaleBaseSize = New Size ( 5 , 13 )
Me.ClientSize = New Size ( 272 , 181 )
Me.Controls.AddRange ( New Control ( ) { Me.cancel , Me.LastName , Me.FirstName , Me.Label2 , Me.Label1 , Me.ok } )
Me.Name = "Form2"
Me.Text = "主窗口"
Me.ResumeLayout ( False )

End Sub


End Class

Module Module1
Sub Main ( )
Application.Run ( new Form2 ( ) )
End sub
End Module


(2).编译命令:
在经过了以下命令行编译完成后:
vbc /t:winexe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll app.vb
运行程序就可以得到以下界面:


图01:WinForm运行生成的界面

三.把这个WinForm程序(app.vb)改变成一个名称空间。
本段落是本文的重点,其实任何一个.Net经过一定的变化,一般都可以变成一个名称空间,在这里就介绍这种转变的过程。
在app.vb上进行以下二步修改:
(1).在导入名称空间的下一行,加入NameSpace my,在以后生成的文件中,就会封装了以my做为名字的名称空间,具体如下: Imports System.Drawing
Imports System.Windows.Forms
Imports System.Comp