网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > DotNet > .NET框架 > 将自定义.NET控件嵌入IE浏览器  

将自定义.NET控件嵌入IE浏览器

2007-07-12  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

  

     利用visual Studio .NET开发自定义的WinForm控件,恐怕大家都已经很熟悉了。正常情况下,这种控件只能用在基于。NET的Windows application程序开发上,而无法直接嵌入到IE,这不免让人感觉遗憾。 网管联盟bitsCN@com

    毕竟。NET控件已经不同于在Win32下用Delphi或C++Builder开发的自定义控件。基于。NET开发的任何受控装配件(Assembly)都是IL代码,可以在运行期被。NET FrameWork进行反射(Reflection)、安全检查。应该有办法让这种特殊控件被IE使用。 网管网www.bitscn.com

    经过几日的研究,终于找到一个方法可以将。NET WinForm自定义控件即用于普通的Windows application开发,又可以将其当做ActiveX控件直接嵌入到IE中,同js脚本语言进行互动(客户端需要安装。NET FrameWork)。这无疑可以大大的节省客户端代码在Windows和Web应用的移植工作,并保持控件代码的最大复用。

网管u家u.bitsCN.com

    原理为:。NET自定义控件没有普通ActiveX的GUID唯一标示,同时为了解决以往版本冲突引起的“DLL地狱”问题,。NET控件不再向注册表进行类型的注册,而是不同的版本部署在应用程序当前目录或GAC(Globle Assembly Cache)中……NET可以为。NET控件产生强名称的代理,从而提供给其他语言比如VB、VC、Delphi等调用。我们只需要在装配件文件(c#下为AssemblyInfo.cs)中就可以设置这些开关,也可以在VS.NET的项目属性中设置。这样。NET就可以为我们自动产生ClassLibrary对应的OLE对象特征。然后我们再创建ActiveX用到的事件接口、安全接口等。

网管论坛bbs_bitsCN_com

    第一步――创建。NET自定义控件。

网管bitscn_com

    下面用visual Studio.NET 2005 Professional为开发工具进行介绍。

网管网www.bitscn.com

    创建新项目,选择Windows Control Library.名称为默认的:WindowsControlLibrary1.

网管u家u.bitsCN.com

    在界面中放置如下控件:TextBox、Button。这就是界面上所有的内容。双击界面中的Button控件,书写如下代码:

网管u家u.bitsCN.com

        private void button1_Click(object sender, EventArgs e) 
        { 
            StreamWriter bplStreamWriter = new StreamWriter( 

网管bitscn_com


                System.Environment.GetEnvironmentVariable("SystemDrive"+
\\a.txt,
true); 
            bplStreamWriter.WriteLine(DateTime.Now.ToUniversalTime() + 
"\tInserted Text by .Net WinFormControl."); 
            bplStreamWriter.Close(); 
网管下载dl.bitscn.com

        }   网管网www_bitscn_com

网管联盟bitsCN_com

         该部分代码表示在系统盘根目录下创建一个文件,并添加一行文本。为了能调用StreamWriter类,我们要添加System.IO名称空间。 网管bitscn_com

同时添加自定义控件的属性:ButtonCaption。 网管论坛bbs_bitsCN_com

        [Category("自定义控件的属性")] 网管网www.bitscn.com

        [Description("设置按钮的文本内容")] 中国网管联盟bitsCN.com

        public string ButtonCaption 网管bitscn_com

        {

网管u家u.bitscn@com

            get

网管下载dl.bitscn.com

            { 网管联盟bitsCN@com

                return button1.Text; 网管bitscn_com

            }

网管网www_bitscn_com

            set

网管联盟bitsCN_com

            {

网管联盟bitsCN_com

                button1.Text = value;

网管u家u.bitsCN.com

            }

网管u家u.bitsCN.com

        }

网管u家u.bitsCN.com

网管联盟bitsCN_com

添加委托(delegate)并创建按键点击事件: 网管联盟bitsCN_com

 

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

网管联盟bitsCN@com

    public delegate void ButtonClickHandler(string SendMsg);

中国网管论坛bbs.bitsCN.com

    public partial class UserControl1 : UserControl 中国网管论坛bbs.bitsCN.com

    {

中国网管联盟bitsCN.com

        // 声明按键点击事件

网管下载dl.bitscn.com

        public event ButtonClickHandler OnButtonClick; 

网管联盟bitsCN_com

网管联盟bitsCN_com

网管论坛bbs_bitsCN_com


TAGs   浏览器   控件   定义   我们   可以   事件   .NET   属性   代码   NET      
 上一篇:.net工程师必懂的20道题   下一篇:字符串的驻留(String Interning)
将自定义.NET控件嵌入IE浏览器 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: