图01:创建类库的【新建项目】对话框 |
图02:在项目中【添加新项】对话框 |
9. 把Visual Studio .Net的当前窗口切换到【MyControl.cs(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往设计窗体中按顺序拖入下列组件:
一个GroupBox组件,并向此组件中再拖入,
一个TextBox组件和一个Lable组件。
10. 把Visual Studio .Net的当前窗口切换到【MyControl.cs】代码编辑窗口,并用下列代码替换MyControl.cs中的InitializeComponent过程,下列代码是初始化上述加入的组件:
private void InitializeComponent ( ) { this.groupBox1 = new System.Windows.Forms.GroupBox ( ) ; this.txtUserText = new System.Windows.Forms.TextBox ( ) ; this.label1 = new System.Windows.Forms.Label ( ) ; this.groupBox1.SuspendLayout ( ) ; this.SuspendLayout ( ) ; this.groupBox1.Controls.Add ( this.txtUserText ) ; this.groupBox1.Controls.Add ( this.label1 ) ; this.groupBox1.Location = new System.Drawing.Point ( 8 , 8 ) ; this.groupBox1.Name = "groupBox1" ; this.groupBox1.Size = new System.Drawing.Size ( 272 , 56 ) ; this.groupBox1.TabIndex = 0 ; this.groupBox1.TabStop = false ; this.groupBox1.Text = "Visual Studio .Net创建的Active X组件" ; this.txtUserText.Enabled = false ; this.txtUserText.Location = new System.Drawing.Point ( 84 , 20 ) ; this.txtUserText.Name = "txtUserText" ; this.txtUserText.Size = new System.Drawing.Size ( 180 , 21 ) ; this.txtUserText.TabIndex = 1 ; this.txtUserText.Text = "" ; this.label1.Location = new System.Drawing.Point ( 8 , 24 ) ; this.label1.Name = "label1" ; this.label1.Size = new System.Drawing.Size ( 66 , 16 ) ; this.label1.TabIndex = 0 ; this.label1.Text = "输入信息:" ; this.Controls.Add ( this.groupBox1 ) ; this.Name = "MyControl" ; this.Size = new System.Drawing.Size ( 288 , 72 ) ; this.groupBox1.ResumeLayout ( false ) ; this.ResumeLayout ( false ) ; } |
图03:【ActiveXDotNet】项目创建的Active X组件的设计界面 |
public interface AxMyControl { String UserText { set ; get ; } } |
private String mStr_UserText ; public String UserText { get { return mStr_UserText ; } set { mStr_UserText = value ; //修改组件的数值 txtUserText.Text = value ; } } |
using System ; using System.Collections ; using System.ComponentModel ; using System.Drawing ; using System.Data ; using System.Windows.Forms ; namespace ActiveXDotNet { public interface AxMyControl { String UserText { set ; get ; } } /// <summary> /// MyControl 的摘要说明。 /// </summary> public class MyControl : System.Windows.Forms.UserControl , AxMyControl { /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null ; private System.Windows.Forms.GroupBox groupBox1 ; private System.Windows.Forms.Label label1 ; private System.Windows.Forms.TextBox txtUserText ; private String mStr_UserText ; public String UserText { get { return mStr_UserText ; } set { mStr_UserText = value ; //修改组件的数值 txtUserText.Text = value ; } } public MyControl ( ) { // 该调用是 Windows.Forms 窗体设计器所必需的。 InitializeComponent ( ) ; // TODO: 在 InitializeComponent 调用后添加任何初始化 } /// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose ( bool disposing ) { if ( disposing ) { if ( components != null ) { components.Dispose ( ) ; } } base.Dispose ( disposing ) ; } #region 组件设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器 /// 修改此方法的内容。 /// </summary> private void InitializeComponent ( ) { this.groupBox1 = new System.Windows.Forms.GroupBox ( ) ; this.txtUserText = new System.Windows.Forms.TextBox ( ) ; this.label1 = new System.Windows.Forms.Label ( ) ; this.groupBox1.SuspendLayout ( ) ; this.SuspendLayout ( ) ; this.groupBox1.Controls.Add ( this.txtUserText ) ; this.groupBox1.Controls.Add ( this.label1 ) ; this.groupBox1.Location = new System.Drawing.Point ( 8 , 8 ) ; this.groupBox1.Name = "groupBox1" ; this.groupBox1.Size = new System.Drawing.Size ( 272 , 56 ) ; this.groupBox1.TabIndex = 0 ; this.groupBox1.TabStop = false ; this.groupBox1.Text = "Visual C#创建的Active X组件" ; this.txtUserText.Enabled = false ; this.txtUserText.Location = new System.Drawing.Point ( 84 , 20 ) ; this.txtUserText.Name = "txtUserText" ; this.txtUserText.Size = new System.Drawing.Size ( 180 , 21 ) ; this.txtUserText.TabIndex = 1 ; this.txtUserText.Text = "" ; this.label1.Location = new System.Drawing.Point ( 8 , 24 ) ; this.label1.Name = "label1" ; this.label1.Size = new System.Drawing.Size ( 66 , 16 ) ; this.label1.TabIndex = 0 ; this.label1.Text = "输入信息:" ; this.Controls.Add ( this.groupBox1 ) ; this.Name = "MyControl" ; this.Size = new System.Drawing.Size ( 288 , 72 ) ; this.groupBox1.ResumeLayout ( false ) ; this.ResumeLayout ( false ) ; } #endregion } } |
精品教程尽在www.xvna.com
四.Visual C#中使用刚封装的Active X组件:
以下步骤就是通过Web页面的方式来测试上面创建组件:
1. 创建一个名称为test.htm文件,MyControl就是放在此Web页面中加以测试的,此文件的内容如下:
<html> <body color = white> <hr> <font face = arial size = 1> <OBJECT id = "MyControl1" name = "MyControl1" classid = "ActiveXDotNet.dll#ActiveXDotNet.MyControl" width = 288 height = 72 > </OBJECT> </font> <form name = "frm" id = "frm" > <input type = "text" name = "txt" value = "请输入数据:" ><input type = button value = "确定" onClick = "doScript ( ) ; "> </form> <hr> </body> <script language = "javascript"> function doScript ( ) { MyControl1.UserText = frm.txt.value ; } </script> </html> |
图04:测试用Visual C#产生的Active X组件的运行界面 |