| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
利用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自定义控件。
下面用visual Studio.NET 2005 Professional为开发工具进行介绍。
网管网www.bitscn.com
创建新项目,选择Windows Control Library.名称为默认的:WindowsControlLibrary1.
网管u家u.bitsCN.com
在界面中放置如下控件:TextBox、Button。这就是界面上所有的内容。双击界面中的Button控件,书写如下代码:
|
private void button1_Click(object sender, EventArgs e) 网管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 |
该部分代码表示在系统盘根目录下创建一个文件,并添加一行文本。为了能调用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 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
|
0
|
评论加载中…