预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

CEControlslibraryDevelopspec 一.C#自定义控件开发概述 基控件类 Control类是Windows窗体控件的基类。它提供了在Windows窗体应用程序中进行可视显示所需的基础结构。 Control类执行下列任务: 1)公开窗口句柄。 2)管理消息路由。 3)提供鼠标和键盘事件,以及许多其他用户界面事件。 4)提供高级布局功能。 5)包含特定于可视显示的许多属性,如ForeColor、BackColor、Height和Width。 6)为Windows窗体控件充当MicrosoftActiveX控件提供必需的安全和线程支持。 由于基类提供了很多基础结构,使得开发自己的Windows窗体控件变得相对简单。 控件的种类及适用情况 Windows窗体支持三种用户定义的控件:复合、扩展和自定义。 1)复合控件是封装在公共容器内的Windows窗体控件的集合。 在下列情况下,从UserControl类继承: 要将若干个Windows窗体控件的功能合成一个可重新使用的单元。 2)扩展控件是从任何现有的Windows窗体控件继承。 处于下列情况时继承Windows窗体控件: 1.大多数所需的功能已经与现有的Windows窗体控件相同。 2.不需要自定义图形用户界面,或者想为现有控件设计一个新的图形用户界面。 3)自定义控件是通过从Control继承头开始创建一个控件。Control类提供控件所需的所有基本功能(包括鼠标和键盘处理事件),但不提供控件特定的功能或图形界面。 若要实现自定义控件,必须编写该控件的OnPaint事件的代码,以及所需的任何功能特定的代码。还可以重写WndProc方法并直接处理窗口消息。 在下列情况下,从Control类继承: 1.想要提供控件的自定义图形化表示形式。 2.需要实现无法从标准控件获得的自定义功能。 二.资源管理 图形对象非常昂贵,它们占用很多系统资源,应该仅在需要时才创建图形资源,并在使用完毕后立即将其释放.(Graphics,Brush,Pen,等) 所有的资源应尽可能在使用时才创建,使用结束之后手动释放。除非此资源要重复使用。 SolidBrushbrush3=newSolidBrush(this.ForeColor); //dosomethingwiththisbrush brush3.Dispose(); 1.不包含托管资源时的资源释放 ///<summary> ///Cleanupanyresourcesbeingused. ///</summary> protectedoverridevoidDispose(booldisposing) { if(disposing) { if(components!=null) { components.Dispose(); } //Releaseothermanageresources } base.Dispose(disposing); } 包含非托管资源的资源释放 StaticHandleforIOhandle(打开一次,同步使用)Relay,Modbus,IPCam等。 请参考清理非托管资源->实现Dispose方法 3.打包资源。如字符串(多语言管理)等 三.在“自定义工具箱”对话框中显示控件 1.将控件程序集安装到全局程序集缓存中。有关附加信息,请参见如何:将程序集安装到全局程序集缓存 2.修改注册表 在HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v2.0.x\AssemblyFoldersEx\PublicAssemblies\<KeyName>处创建注册表项,并将“默认”字符串值设置为您的程序集所在的文件位置。<KeyName>可以是您希望设置的任何值。 在VisualStudio.NET2003中,此注册表项应该在HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\7.1\AssemblyFolders\<KeyName>处创建。 在VisualStudio.NET2002中,此注册表项应该在HKEY_LOCAL_MACHINE\Software\Microsoft\.NET\AssemblyFolders\<KeyName>处创建。 四.控件要素 1.将属性应用于控件的属性 Category、Description、Editor、DefaultValue 如果属性不具有简单的默认值,则可以为属性提供可选方法ShouldSerialize和Reset。如果属性(Property)具有简单的默认值,则应用DefaultValueAttribute 设计器可使用ShouldSerial