快速业务通道

将自定义.NET控件实现COM对象接口嵌入IE浏览器

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-12

将自定义.NET控件嵌入IE浏览器
利用Visual Studio .NET开发自定义的WinForm控件,恐怕大家都已经很熟悉了。正常情况下,这种控件只能用在基于.NET的Windows Application程序开发上,而无法直接嵌入到IE,这不免让人感觉遗憾。 
毕竟.NET控件已经不同于在Win32下用Delphi或C++Builder开发的自定义控件。基于.NET开发的任何受控装配件(Assembly)都是IL代码,可以在运行期被.NET FrameWork进行反射(Reflection)、安全检查。应该有办法让这种特殊控件被IE使用。 
经过几日的研究,终于找到一个方法可以将.NET WinForm自定义控件即用于普通的Windows Application开发,又可以将其当做ActiveX控件直接嵌入到IE中,同js脚本语言进行互动(客户端需要安装.NET FrameWork)。这无疑可以大大的节省客户端代码在Windows和Web应用的移植工作,并保持控件代码的最大复用。 
原理为:.NET自定义控件没有普通ActiveX的GUID唯一标示,同时为了解决以往版本冲突引起的“DLL地狱”问题,.NET控件不再向注册表进行类型的注册,而是不同的版本部署在应用程序当前目录或GAC(Globle Assembly Cache)中。.NET可以为.NET控件产生强名称的代理,从而提供给其他语言比如VB、VC、Delphi等调用。我们只需要在装配件文件(C#下为AssemblyInfo.cs)中就可以设置这些开关,也可以在VS.NET的项目属性中设置。这样.NET就可以为我们自动产生 ClassLibrary对应的OLE对象特征。然后我们再创建ActiveX用到的事件接口、安全接口等。 
第一步――创建.NET自定义控件。
下面用Visual Studio.NET 2005 Professional为开发工具进行介绍。
    创建新项目,选择Windows Control Library。名称为默认的:WindowsControlLibrary1。
    在界面中放置如下控件:TextBox、Button。这就是界面上所有的内容。双击界面中的Button控件,书写如下代码:
        private void button1_Click(object sender, EventArgs e)
        {
            StreamWriter bplStreamWriter = new StreamWriter(
                System.Environment.GetEnvironmentVariable("SystemDrive")+"\\a.txt",
                true);
            bplStreamWriter.WriteLine(DateTime.Now.ToUniversalTime() +
                "\tInserted Text by .Net WinFormControl.");
            bplStreamWriter.Close();
        }

该部分代码表示在系统盘根目录下创建一个文件,并添加一行文本。为了能调用StreamWriter类,我们要添加System.IO名称空间。
同时添加自定义控件的属性:ButtonCaption。
        [Category("自定义控件的属性")]
        [Description("设置按钮的文本内容")]
        public string ButtonCaption
        {
            get
            {
                return button1.Text;
            }
            set
            {
   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号