详解VB.NET Component类
创始人
2024-06-09 06:01:34
0

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就可以了。

  1. Imports loginValidator  
  2. Imports System.Data  
  3. Imports System.Data.SqlClient  
  4. Public Class loginFormClass loginForm  
  5. Inherits System.Windows.Forms.Form  
  6. #Region " Windows 窗体设计器生成的代码 "  
  7. Public Sub New()Sub New()  
  8. MyBase.New()  
  9. '该调用是 Windows 窗体设计器所必需的。  
  10. InitializeComponent()  
  11. '在 InitializeComponent() 调用之后添加任何初始化  
  12. End Sub  
  13.  
  14. '窗体重写 dispose 以清理组件列表。  
  15. Protected Overloads Overrides Sub Dispose()Sub Dispose(ByVal disposing As Boolean)  
  16. If disposing Then  
  17. If Not (components Is Nothing) Then  
  18. components.Dispose()  
  19. End If  
  20. End If  
  21. MyBase.Dispose(disposing)  
  22. End Sub  
  23.  
  24. 'Windows 窗体设计器所必需的  
  25. Private components As System.ComponentModel.IContainer  
  26.  
  27. '注意: 以下过程是 Windows 窗体设计器所必需的  
  28. '可以使用 Windows 窗体设计器修改此过程。  
  29. '不要使用代码编辑器修改它。  
  30. Friend WithEvents lblUserPwd As System.Windows.Forms.Label  
  31. Friend WithEvents lblUserName As System.Windows.Forms.Label  
  32. Friend WithEvents txtUserName As System.Windows.Forms.TextBox  
  33. Friend WithEvents txtUserPwd As System.Windows.Forms.TextBox  
  34. Friend WithEvents btnSubmit As System.Windows.Forms.Button  
  35. Friend WithEvents btnExit As System.Windows.Forms.Button  
  36. Friend WithEvents Label1 As System.Windows.Forms.Label  
  37. Friend WithEvents Label2 As System.Windows.Forms.Label  
  38. Friend WithEvents btnCancel As System.Windows.Forms.Button  
  39. Friend WithEvents Label3 As System.Windows.Forms.Label  
  40. ()> Private Sub 
    InitializeComponent()Sub InitializeComponent()  
  41. Dim resources As System.Resources.ResourceManager = 
    New System.Resources.ResourceManager(GetType(loginForm))  
  42. Me.lblUserPwd = New System.Windows.Forms.Label  
  43. Me.lblUserName = New System.Windows.Forms.Label  
  44. Me.txtUserName = New System.Windows.Forms.TextBox  
  45. Me.txtUserPwd = New System.Windows.Forms.TextBox  
  46. Me.btnSubmit = New System.Windows.Forms.Button  
  47. Me.btnExit = New System.Windows.Forms.Button  
  48. Me.Label1 = New System.Windows.Forms.Label  
  49. Me.Label2 = New System.Windows.Forms.Label  
  50. Me.btnCancel = New System.Windows.Forms.Button  
  51. Me.Label3 = New System.Windows.Forms.Label  
  52. 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组件名称,第三个为要生成的名称空间,第四个为 版本号,第四个指定引用的文件名。

【编辑推荐】

  1. 描述VB.NET EIF体系
  2. 简单讲述VB.NET多重继承
  3. 浅谈VB.NET语言与.NET开发语言关系
  4. 讲解VB.NET语言学习经验
  5. 浅析VB.NET语言到底带来了什么

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...