VB.NET有很多值得学习的地方,这里我们主要介绍VB.NET Component类,包括介绍直接使用COM组件是通过Add Reference来实现等方面。
组件其实是一段可以重用的代码,通过遵循IComponent接口的标准来实现一个组件,所以有组件都是派生于Component类,由VB.NET Component类来实现IComponent接口。在组件中应正确使用函数的访问级别来控制外部对其的访问限制。
只要有足够的权限就可以将组件放到自己的程序中而不用担心组件会产生多大的错误,因为组件已经经过测试的。比如说可以把一段登录的程序做成一个组件,或者把经常使用到的一些功能也做成组件,这样就可以减少开发中的错误,也可以缩短开发时间。组件之间也可以互相套用,如一个组件引用另一个组件,都是没问题,但要先在Add Reference中添加对组件的引用,在.NET中是通过把组件放在程序集中来实现的,程序集中存放着这些组件所依赖的文件信息和所在路径,因此CLR 就可以通过这些信息来确定组件所需要的其他程序集的位置。
在VS中创建组件:选建一个Project,再从模板中选Class Library,OK。接着再从Project菜单中Add Component,到些为止,组件的一个框架就呈现在眼前,平台自动继承了VB.NET Component类和构造函数。可以删除原先创建类库时自动生成的 Class1,看应用的需要。接着就可以在组件类里写要实现的功能,***从Build(生成)菜单中选择Build Solution(生成解决方案)来生成组件。如果生成成功的话,到应用程序的BIN目录下会看到一个DLL文件。
引用组件:只要在Solution Explorer窗口中,添加对DLL的Reference就可以了。
- Imports loginValidator
- Imports System.Data
- Imports System.Data.SqlClient
- Public Class loginFormClass loginForm
- Inherits System.Windows.Forms.Form
- #Region " Windows 窗体设计器生成的代码 "
- Public Sub New()Sub New()
- MyBase.New()
- '该调用是 Windows 窗体设计器所必需的。
- InitializeComponent()
- '在 InitializeComponent() 调用之后添加任何初始化
- End Sub
- '窗体重写 dispose 以清理组件列表。
- Protected Overloads Overrides Sub Dispose()Sub Dispose(ByVal disposing As Boolean)
- If disposing Then
- If Not (components Is Nothing) Then
- components.Dispose()
- End If
- End If
- MyBase.Dispose(disposing)
- End Sub
- 'Windows 窗体设计器所必需的
- Private components As System.ComponentModel.IContainer
- '注意: 以下过程是 Windows 窗体设计器所必需的
- '可以使用 Windows 窗体设计器修改此过程。
- '不要使用代码编辑器修改它。
- Friend WithEvents lblUserPwd As System.Windows.Forms.Label
- Friend WithEvents lblUserName As System.Windows.Forms.Label
- Friend WithEvents txtUserName As System.Windows.Forms.TextBox
- Friend WithEvents txtUserPwd As System.Windows.Forms.TextBox
- Friend WithEvents btnSubmit As System.Windows.Forms.Button
- Friend WithEvents btnExit As System.Windows.Forms.Button
- Friend WithEvents Label1 As System.Windows.Forms.Label
- Friend WithEvents Label2 As System.Windows.Forms.Label
- Friend WithEvents btnCancel As System.Windows.Forms.Button
- Friend WithEvents Label3 As System.Windows.Forms.Label
- <System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()Sub InitializeComponent()- Dim resources As System.Resources.ResourceManager =
New System.Resources.ResourceManager(GetType(loginForm))- Me.lblUserPwd = New System.Windows.Forms.Label
- Me.lblUserName = New System.Windows.Forms.Label
- Me.txtUserName = New System.Windows.Forms.TextBox
- Me.txtUserPwd = New System.Windows.Forms.TextBox
- Me.btnSubmit = New System.Windows.Forms.Button
- Me.btnExit = New System.Windows.Forms.Button
- Me.Label1 = New System.Windows.Forms.Label
- Me.Label2 = New System.Windows.Forms.Label
- Me.btnCancel = New System.Windows.Forms.Button
- Me.Label3 = New System.Windows.Forms.Label
- Me.SuspendLayout()
关于VB.NET Component类:.NET可以向后兼容,并支持了COM和ActiveX对象等早期版本的应用程序。在.NET中使用COM等很有趣,.NET创建一个包将它们包装起来,而它们之间的交互就是通过这个包装来进行的,这个包就叫做运行时可呼叫包装(RCW)。可以直接使用COM,也可以先转换成.NET程序集后再使用。
1、直接使用COM组件是通过Add Reference来实现的,这种方法通过RCW来包装。缺点:无法放到 GAC中,不能重用。
2、通过转换成.NET程序集来使用,是通过利用 tlbimp 命令行工具来实现的。
***个为COM的名称,第二个为要生成的.NET组件名称,第三个为要生成的名称空间,第四个为 版本号,第四个指定引用的文件名。
【编辑推荐】