频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

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

来源: 作者: 出处:巧巧读书 2007-07-12 进入讨论组
下一页 1 2 3 
访问 http://www.qqread.com/dotnet/h321254.html

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

    毕竟。NET控件已经不同于在Win32下用DelphiC++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; 

更多文章 更多内容请看浏览器安全隐患及对策.NET移动与嵌入式技术.NET开发手册专题,或进入讨论组讨论。
下一页 1 2 3 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章