第十三章: Visual Basic. net组件开发 知识点: 组件开发的概念 COM与NET的互操作 组件开发实例 软件工程一个重要的概念就是复用,相信大多数程序员都有这样的体验, 很多时候都是在写大量重复的代码,甚至很多时候把以前一些项目中的代码 直接Copy过来用,这部分代码就是可以重用的代码,在一些情况下,将这部 分代码以组件的形式封装起来,在需要的时候直接调用,可以大大提高工作 效率,而且使用一些开源的组件,利用人家写好的优秀的模块,也可以省去 不少麻烦,所以,组件开发是现代软件工程学中不可缺少的一部分,本章将 从组件开发的基本概念出发讲解组件开发的一些要点以及NET组件以往的 COM组件的互操作问题,最后通过一个实例来向大家展示组件开发的魅力
第十三章: Visual Basic.NET组件开发 知识点: 组件开发的概念 COM与.NET的互操作 组件开发实例 软件工程一个重要的概念就是复用,相信大多数程序员都有这样的体验, 很多时候都是在写大量重复的代码,甚至很多时候把以前一些项目中的代码 直接Copy过来用,这部分代码就是可以重用的代码,在一些情况下,将这部 分代码以组件的形式封装起来,在需要的时候直接调用,可以大大提高工作 效率,而且使用一些开源的组件,利用人家写好的优秀的模块,也可以省去 不少麻烦,所以,组件开发是现代软件工程学中不可缺少的一部分,本章将 从组件开发的基本概念出发讲解组件开发的一些要点以及.NET组件以往的 COM组件的互操作问题,最后通过一个实例来向大家展示组件开发的魅力
131组件开发概述 微软NET应用程序是从组件开始构建的。所有NET对象通过接口提供其重 要的特性,如属性、方法和事件。这些特性构成了面向对象编程的基础。作为 sual baslc.Net组件对象的程序设计师,要负责实现必需的接口(即属性、 方法和事件),其他程序员通过这些接口引用组件对象所提供的服务。因此, 开发组件的大部分精力将用于设计对象,定义所开发组件被调用的接口。一般 情况下,简单的NET面向对象的编程都将涉及到创建类,添加类所需要的属 性、方法和事件,并将这个类包含在不同的应用程序中。在NET中创建组件 同样是基于面向对象的原则,但它们超出了可以在多个应用程序中使用的简单 类的概念 通常定义组件为可交换的软件部分,它是工业化系统的产物,在NET 台的组件层中,组件是以 Assemblies的形式存在的,可以用任何NET支持的 语言来开发组件,作为一个软件部件而不是整体,组件常常以插接的形式来开 发,通过接口来实现与其他程序的互操作。服务化组件是这中间的一类特殊的 组件,与NET中标准的可管理组件不同的是这类组件使用了COM服务
13.1 组件开发概述 微软NET应用程序是从组件开始构建的。所有NET对象通过接口提供其重 要的特性,如属性、方法和事件。这些特性构成了面向对象编程的基础。作为 VisuaI Baslc. Net组件对象的程序设计师,要负责实现必需的接口(即属性、 方法和事件),其他程序员通过这些接口引用组件对象所提供的服务。因此, 开发组件的大部分精力将用于设计对象,定义所开发组件被调用的接口。一般 情况下,简单的.NET面向对象的编程都将涉及到创建类,添加类所需要的属 性、方法和事件,并将这个类包含在不同的应用程序中。在.NET中创建组件 同样是基于面向对象的原则,但它们超出了可以在多个应用程序中使用的简单 类的概念。 通常定义组件为可交换的软件部分,它是工业化系统的产物,在.NET平 台的组件层中,组件是以Assemblies的形式存在的,可以用任何.NET支持的 语言来开发组件,作为一个软件部件而不是整体,组件常常以插接的形式来开 发,通过接口来实现与其他程序的互操作。服务化组件是这中间的一类特殊的 组件,与.NET中标准的可管理组件不同的是这类组件使用了COM服务
下面通过一个简单实例,介绍Ne组件的创建于与使用: 首先新建一个“ windows控件库”项目,命名为“ TextChange”,如图所示 新建项目 项目类型(P) 模板(工 VIsual Basic Office Windows应用类库制台应用 windows web控件库 由智能设备 程序 数据库 初学者工具包 测试 中其他语言 Wows服务空项目 Crystal 分布式系统解决方案 Reports应 中其他项目类型 中测试项目 搜索联机模 用于创建在 Windows应用程序中使用的控件的项目 名称() Exchang 确定取消
下面通过一个简单实例,介绍.Net组件的创建于与使用: 首先新建一个“windows控件库”项目,命名为“TextChange”,如图所示
在集成环境中自动生成可添加控件的容器,如图所示 oo TextChange-Microsoft Visual Studio 文件()编辑(E视图(项目P生成(B)调试()数据(A)格式(Q)工具①测试(5 窗口()社区(帮助(H UserControl1 yb[设计] ×解决方案资源管理器 H游 回国回员 中+- My project 回引用 啡 白国 User Controll, yb 2 UserControl. Designer. vb User Control1 System. Windows Forms, US 田( Application Setting: 错误列表 田( bIndings lleesfaskval1 0个错误0个警告①0个消息 (ApplicationSettings) 「说文件 列 [项自将属性设置映射到用程序配置文件 就绪
在集成环境中自动生成可添加控件的容器,如图所示
把 User Control1b改为 Text Change.∽b,也就是生成的控件名为 Text change。 再来看自动生成的代码框架 <Global. Microsoft VisualBasic. Compiler Services. Designer Generated> Partial Class textchange nherits System Windows Forms UserControl decOntrol.重写 Dispose,以清理组件列表 说明: <System Diagnostics Debugger codeo> a Inherits Protected Overrides Sub Dispose(By Val disposing As Boolean) If disposing AndAlso components Is Not Nothing Then System Win components. Dispose dows. Form End If s. UserContr My Base. Dispose(disposing) o代表 End sub Text Chang Windows窗体设计器所必需的 e类继承 Private components As System Component Model. IContainer System Win 注意:以下过程是 Windows窗体设计器所必需的 dows. Form 可以使用 Windows窗体设计器修改它。 s. UserContr 不要使用代码编辑器修改它 System Diagnostics Debugger Step Througho l类 Private Sub Initialize Component b.必 components New System Component Model. Container 须实现 Me. Auto Scale Mode System Windows Forms. Auto ScaleMode Font dispose End Sub End class
把UserControl1.vb改为TextChange.vb,也就是生成的控件名为TextChange。 再来看自动生成的代码框架。 <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Partial Class textchange Inherits System.Windows.Forms.UserControl 'UserControl1 重写 Dispose,以清理组件列表。 <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) If disposing AndAlso components IsNot Nothing Then components.Dispose() End If MyBase.Dispose(disposing) End Sub 'Windows 窗体设计器所必需的 Private components As System.ComponentModel.IContainer '注意:以下过程是 Windows 窗体设计器所必需的 '可以使用 Windows 窗体设计器修改它。 '不要使用代码编辑器修改它。 <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() components = New System.ComponentModel.Container() Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font End Sub End Class 说明: a.Inherits System.Win dows.Form s.UserContr ol代表 TextChang e类继承 System.Win dows.Form s.UserContr ol类。 b.必 须实现 dispose方 法