首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> .NET Framework >> 正文

将自定义.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

            {

                button1.Text = value;

            }

        }

添加委托(delegate)并创建按键点击事件:

 

    // 声明按键点击事件类型

    public delegate void ButtonClickHandler(string SendMsg);

    public partial class UserControl1 : UserControl

    {

        // 声明按键点击事件

        public event ButtonClickHandler OnButtonClick; 

[1] [2] [3] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航