net控件 net

asp.net的控件

asp net的控件分为内置和外置两种。asp net的内置控件分为两种:HTML 控件 (HTML control)和用户控件 (User control)。外置控件,在使用前,需要将其添加到Visual Studio .NET环境中。然后就可以通过启动一个新项目来使用新的控件。 虽然有的时候,控件在开发机器上运行正常,但当程序被部署到终端用户机器上时,会出现问题。因为很多终端机器不允许安装外置控件,对于上述问题有简单实用的解决办法-“在服务器上部署 “fp_client” 文件夹”。
fp_client 文件夹包含所有ASPNET外置控件需要的脚本文件。 拿Spread控件为例,Web 页面上的 Spread 控件实例从服务器上的 fp_client 文件夹中读取前台格式化、样式和脚本功能。  fp_client 文件夹的默认安装路径是:C:\Program Files\GrapeCity\Spread.ASP.5.dotNet20\v5.0.2015\fp_client\fpspread\5_0_2015_2008\HTC
我们需要在 web.config 文件中添加以下代码 fp_client 文件夹进行正确的加载: 《appSettings》《addkey=fp_clientvalue=fp_client/》《/appSettings》下面是两个有助于我们更加深入的去解决该问题问题的相关点:  1.上面的标签仅在你想要从程序根目录下载“fp_client”文件夹是需要 ,在这种情况下,你需要复制 fp_client 文件夹并且把它粘帖到程序的根目录下,或者创建一个映射到 fp_client 文件夹的虚拟路径。  2.在服务器上有很多网址运行 Spread for ASPNET,我们仅需要把 fp_client 文件夹 复制到服务器的根目录上即可(而不是程序的根目录)。在这种情形下, 上述 web.config 标签是不需要添加的,程序仍然可以完美运行。 1、ClientIDMode
渲染ASP NET控件时会自动生成一个ID,当在客户端脚本中引用它们时,却会制造不少麻烦,虽然它是命名容器和ID的简单串联,但仍然无法预测生成的ID范围.
ASP NET 4.0使用ClientIDMode属性解决了这个问题,它允许控制生成这些ID的方法,ClientIDMode有四个可选择的值:AutoID,Static,Predictable和Inherit.下面是这四个值的含义解释:
AutoID – 和4.0以前的版本保持一致,自动生成ID.
Static – 指定ID的值,在渲染控件时不会发生变化.
Predictable – 指定后缀,然后和容器控件的ID属性进行合并.
Inherit – 继承父控件的设置.
注意,Page的默认ClientIDMode属性的值是AutoID,可以通过@ Page指令设置页面级的值,还可以通过修改Web配置文件设置应用程序级的值.
[pre]
《system.web》
《pages clientIDMode=Predictable》《/pages》 《/system.web》
[/pre]
2、Meta关键字和Meta描述
在ASP NET 4.0中Page类增加了两个新的属性:Meta Keywords和Meta Description,可以在运行时设置这两个属性,通过数据库或其它源驱动,并允许动态设置标签,描述特定的页面,下面的Page标签显示了这两个属性. [pre]《%@PageLanguage=C#AutoEventWireup=trueKeywords=keyword1,keyword2Description=mydescription%》C#AutoEventWireup=trueKeywords=keyword1,keyword2Description=mydescription%》C#AutoEventWireup=trueKeywords=keyword1,keyword2Description=mydescription%》[/pre]3、数据绑定控件中的行持久性选择
ASP NET数据绑定控件,如Grid View,都支持行选择,但它们应该选择每个页面上相同编号的行,但ASP NET 4.0以前的版本中,行持久性选择是不能实现的,因为以前的版本选择后续页面上的行时是基于行索引的,ASP NET 4.0提供了一个直观的方法解决了这一问题.
数据绑定控件现在提供了一个EnablePersistedSection属性,它可以帮助实现行持久性选择。
4、AutoEventWireup
AutoEventWireup是很少使用但知名度很高的一个ASP NET属性,简单地说,它设置为True时,在未明确委派的情况下,允许自动调用页面事件。
它的默认值是True,AutoEventWireup属性的缺点在MSDN上有详细描述:它限制了命名事件处理程序的灵活性,另一个缺点是对性能的不利影响,对于高流量的网站,性能影响是巨大的.
5、Page的Header属性
Page类现在提供了Header属性,可以在运行时绑定它,下面的代码示例显示了如何明确设置Title属性.
this.Header.Title = My page title;
当根据某个规则动态关联一个样式表时,这个属性非常方便,在这种情况下,打印页面是理想的候选. [pre]HtmlLinkprintLink=newHtmlLink();printLink.Attributes.Add(type,text/css);printLink.Attributes.Add(rel,stylesheet);printLink.Attributes.Add(href,css/print.css);this.Header.Controls.Add(printLink);[/pre]6、AssociatedControlID属性
可以在一个Web表单中将一个控件关联到另一个服务器控件,这时需要使用服务器控件的AssociatedControlID属性,当根据某些行为为关联的控件设置热键时,这个属性就可以派上用场了.
AssociatedControlID属性的默认值是一个空字符串,它表示控件未与任何服务器控件关联,下面的代码显示了一个Textbox控件是如何与Label服务器控件关联的.
7、ControlState属性
ASP NET最重要的状态管理技术是ViewState,它允许你在往返Web服务器的路上保留值,但由于可在父级关闭,它并不是保存信息可靠的方法.
ASP NET 2.0为服务器控件引入了私有的ViewState,叫做ControlState,它可用来存储控件的关键信息,ASP NET可以处理它的序列化和反序列化.
注意,使用时必须谨慎,因为它会影响页面的性能.
8、Control.PreserveProperty
针对传统的视图状态用法,Rick Strahl为我们提供了另一个选择:PreservedProperties,它可以保存控件ID和属性名称,详细信息请参考Implementing an ASP NET PreserveProperty Control(实现ASP NET PreserveProperty控件).
9、PreviousPageType指令
PreviousPageType指令是ASP NET 2.0跨页面回送机制的一部分,允许指定来源页面的虚拟路径,以便强类型访问来源页面.正常情况下,发送的数据可通过PreviousPage属性和FindControl方法访问,但使用强类型的PreviousPageType指令允许你访问公共属性,而不需要调用FindControl方法.

net常用第三方控件都有哪些

.net常用第三方控件有以下方面的控件:

  1. 表格数据处理:FlexGrid、True DBGrid、DataGrid等

  2. 数据可视化:FlexChart、C1Chart、GanttView等

  3. 报表和文档:C1Report、FlexReport等

  4. 日程安排:C1Schedule、C1Calendar等

  5. 输入和编辑:C1Input、C1Editor 等、

  6. 导航和布局:C1Mune、C1Ribbon等

  7. 系统提升:C1ThemeController等

需要的控件,可以在下面的页面查找

http://www.gcpowertools.com.cn/products/componentoneenterprise/controls.htm

C#.net的控件

C#提供了很多控件用于开发应用程序。
C#标准控件根据其应用环境分为两类:
Windows Form控件:主要用于Windows应用程序的开发。所有的Windows控件都是从Control类中派生来的,该类包含了所有用户界面的Windows Form组件,其中也包括Form类。Control类中包括了很多位所有控件所共享的属性、事件和方法。它包含复选框、文本框、按钮、标签、图像列表等。
Web窗体控件:主要用于Web应用程序的开发。它是专门针对Asp .NET Web窗体设计的服务器控件。Web窗体控件包含在命名空间System.Web.UI.WebControls中,当用户使用Visual Studio创建Web窗体页面时,会自动在后台代码文件中添加引用该命名空间的Using语句。
.NET Compact Framework 提供了可以满足大多数设备项目需要的Windows Form控件。若要使用这些控件没有的功能,可以从公共控件派生您自己的自定义控件。可以通过定义从 Control 类或从程序集中的现有 UserControl 继承的公共类型创建自定义控件。
最简单的控件自定义是重写公共控件的方法。例如,可以重写 TextBox 控件的 OnKeyPress 继承方法,提供将输入限制为数字字符的代码。
如若觉得自定义控件过于浪费时间和复杂,也可以从受信任的来源下载控件,并通过添加引用来导入自定义控件。支持这些自定义的.NET的控件有:ComponentOne Studio, Spread,ActiveReports、MultiRow等。

wincc不能读取.net 控件

wincc不能读取.net 控件可以尝试使用Visual Studio 2005编写。
WinCC V7.0支持的自定义.NET控件,需要使用Visual Studio 2005编写。下面以C#编程语言为例,开发一个简单的.NET控件,这个控件仅提供一个方法Add, 实现两数相加的功能。在VS2005中新建一个工程CalculateControl,工程类型为 Visual C# 中的Windows Control Library,在 Solution Explorer 窗口中,将UserControl1.cs重命名为 Calculate.cs,弹出的对话框询问是否改变所有与UserControl1相关的代码,点击[Yes]确认。在Calculate.cs 文件的Calculate类中添加Add函数,用于计算两数之和,如下所示public double Add(double dblA, double dblB)
{
return ( dblA + dblB );
}
在 Calculate.cs 文件的Calculate类之前插入如下代码:// CalculateControl.Calculate 是该控件的PROGID.[ProgId(“CalculateControl.Calculate“)]// 缺省的是ClassInterfaceType.AutoDispatch,该方式下只生成dispatch接口,// 只能被使用script、VB等late bingding方式的COM客户使用。[ClassInterface(ClassInterfaceType.AutoDual)]然后在 Calculate.cs 文件的上部插入如下代码:using System.Runtime.InteropServices;将工具栏中的 Solution Configurations 下拉列表设为 Release,在工程\属性的 Application 页中,点击 [Assembly Information…] 按钮,选中 Make assembly COM-Visible,并点击 [OK] 按钮确认。在 Build 页中,选中 Register for COM interop 后,保存设置,并编译程序,这样编译后同时会生成CalculateControl.tlb文件,并且自动将其注册(命令行命令regasm有同样的效果),注意到CalculateControl.dll生成到 bin\Release 文件夹中。开发.NET控件的安装程序,如果该控件需要在另一台计算机上使用,需要为该控件设计安装程序。新建一个VS2005工程SetupCalculateControl,工程类型为Setup and Deployment \ Setup Project。在Solution Explorer窗口中的工程名(SetupCalculateControl)节点上右键单击,在弹出的快捷菜单中选择Add\Assembly…项,在Browse页中,找到刚才编译的CalculateControl.dll,将其加入到安装程序中,注意到CalculateControl.tlb 也一并被加入进来。选中CalculateControl.dll节点,将其属性中的Register从vsdraDoNotRegister改为vsdraCOM,用于在安装过程中自动注册控件。将工具栏中的 Solution Configurations 下拉列表设为 Release,编译该安装工程,在Release 文件夹中可以找到生成的安装文件(包括setup.exe和SetupCalculatorControl.msi)。
测试.NET控件,使用ActiveX Control Test Container测试该控件的功能,双击tstcon32.exe(位于$\Program Files\Microsoft Visual Studio 8\Common7\Tools),在Edit菜单中选择 [Insert New Control…] ,在弹出的 Insert Control 对话框中,点击 [Implemented Categories…] 按钮,选中 .NET Category 复选框,点击 [OK] 按钮确认。在列表框中选择CalculateControl.Calculate,点击 [OK] 按钮确认,这时该.NET控件被加入到测试容器中。选中该控件,在Control菜单中选择[Invoke Methods…]项,在Method Name中选择Add(Method),分别设定两个加数的值,点击 [Invoke] 按钮,在Return Value 文本框中可以看到两数相加的结果。

简述asp.net中控件的种类及特点

asp.net的容器控件主要是Panel,HTML的有DIV ,Table,iframe,Span,fieldset,span等,使用容器控件可以使界面看上去有条理,控制一组控件的可见性,便于设置一批控件的样式,方便布局网页,还可以引用外来的网页数据等等。

它主要是让服务器取得客户端浏览器的一些数据。Request对象实际上操作system.web名字空间中的HttpRequest类。当用户发出请求执行ASP.NET程序时,CLR会将客户端的请求信息包装在Request对象中。这些请求信息包括请求报头、客户端的请求信息、请求方法、参数名、参数值等。

扩展资料:

工作原理:

从使用的角度看,ASP.NET的运行过程包含页面请求、分析、编译、组装、页面缓冲五大环节。当客户端通过浏览器请求(Request)页面时,服务器端首先由页面分析器(Parser)对被请求的页面进行分析;再将通过分析的页面内容传递给编译器(Compiler)。

经过编译器编译的页面内容被传输给组装缓存(Assembly Cache),同时,一些需要较高资源代价的元素可以创建一次后存人内存(Memory)。

将组装缓存和内存中的内容有机结合后形成一个完整页面(包括数据、编译代码、HTML代码等),完整页面最后被送往输出缓存(Output Cache)。输出缓存中的内容将作为客户端的页面请求结果被送回浏览器。

参考资料来源:百度百科-asp.net


Net下报表控件哪个好

一、支持的开发环境
FastReport .NET官方显示当前支持WinForm和Asp.NET两种模式。
二、报表设计器
和FastReport VCL一样,.NET版也为开发者提供了一个报表模版设计器,这个设计器既可以在Visual Studio集成环境中打开,也可以独立打包成一个应用程序。当然你想打包成独立的应用程序需要购买专业版以上版本,否则设计模版你只能在Visual Studio进行了。
三、丰富的报表元件及报表类型
FastReport .NET的报表元件很丰富,从最基本的文本元件、图形和直线到图表元件和条形码元件都已经包含。特别,自从微软收购了Dundas Chart,现在最新的Visual Studio 2010中包含了免费的漂亮的Dundas Chart,FastReport把Visual Studio中的图表给整合进来,应该说效果还是非常不错的,这几类图表已经基本上满足我们的需求了。
FastReport几乎只要能你能想到的报表,基本上都能实现。从简单的List报表,到分组报表、交叉报表和主从报表等,都能直观方便的实现。另外其内置脚本引擎,你可以报表模版变编写脚本,做出更复杂和个性化的报表。
XtraReports Suite
XtraReports Suite是属于DXperience控件包中的一个报表控件,功能很全面,而且官方支持WinForms, ASP.Net, MVC, WPF, Silverlight和LightSwitch这6种开发环境。XtraReports得益于Devexpress公司.Net控件的优秀架构,扩展非常灵活,它不但自身已经包含了很多报表元件,比如:图表,交叉表,条形码和表格,而且还能将第三方的.NET控件作为报表原件使用,例如把一个TreeView控件放到模板上。

什么是ASP.NET中的控件

ASP.NET
Web
服务器控件是
ASP.NET
网页上的对象,当请求网页时,这些对象将运行并向浏览器呈现标记。
许多
Web
服务器控件与常见的
HTML
元素(如按钮和文本框)类似。
其他控件具有复杂行为,如日历控件和管理数据连接的控件。
一般分为三大类:
1.
ASP.NET
用户控件
除在
ASP.NET
网页中使用
Web
服务器控件外,您还可以使用用于创建
ASP.NET
网页的相同技术创建可重复使用的自定义控件。
这些控件称作用户控件。
用户控件是一种复合控件,工作原理非常类似于
ASP.NET
网页

您可以向用户控件添加现有的
Web
服务器控件和标记,并定义控件的属性和方法。
然后可以将控件嵌入
ASP.NET
网页中充当一个单元。
2.
ASP.NET
Web
服务器控件
ASP.NET
Web
服务器控件是
ASP.NET
网页上的对象,这些对象在请求网页时运行并向浏览器呈现标记。
许多
Web
服务器控件类似于常见的
HTML
元素(如按钮和文本框)。
其他控件具有复杂行为,如日历控件以及可用于连接数据源并显示数据的控件。
ASP.NET
还提供支持
AJAX
的服务器控件。
这些控件由服务器和客户端代码组成,这些代码集成在一起可生成丰富的客户端行为。
当您将
AJAX
控件添加到
ASP.NET
网页上时,该页会自动将支持的客户端脚本发送到浏览器以获取
AJAX
功能。
您也可以提供其他的客户端代码来自定义控件的功能,但这不是必需的。
3.
ASP.NET
Web
部件控件
ASP.NET
Web
部件控件是一组集成控件,用于创建这样的网站:最终用户可以在浏览器中直接修改网页的内容、外观和行为。
本节中的主题提供有关
Web
部件的定义、工作原理以及如何使用
Web
部件创建用户可自定义的
ASP.NET
网页的信息。

NET类,组件,控件以及组件和控件的区别

组件和控件的区别:
1、Component在Run Time时不能呈现UI,而Control可以在Run Time时呈现UI(但是vs 2005里的asp.net中的SqlDataSource是Control,但是它不能呈现UI)。
2、Component是贴在容器Container上的,而Control则是贴在Windows Form或者Web Form上的。
举例来说,SqlCommand是个Component,DataGrid则是一个Control。
类:
如果您的类使用外部资源但不用于设计图面,则实现 System.IDisposable,或者从直接或间接实现 IDisposable 的类派生。
如果您的类要用于设计图面(如 Windows 窗体或 Web 窗体设计器),则实现 System.ComponentModel.IComponent,或者从直接或间接实现 IComponent 的类派生。请注意,IComponent 扩展 IDisposable,因此 IComponent 类型始终是IDisposable 类型。与不是 IComponent 的 IDisposable 类型相比,IComponent 类型的性能系统开销要小。但这一不足通常可由在设计时和运行时安置 IComponent的能力来弥补。(在本主题的后面部分将对该安置功能进行说明)。
如果希望类可设计(在设计图面上使用)并且可按引用封送,可从 System.ComponentModel.Component 派生。Component 是按引用封送的 IComponent 类型的基实现。
如果希望可设计的类可按值封送,可从 System.ComponentModel.MarshalByValueComponent 派生。MarshalByValueComponent 是按值封送的 IComponent 类型的基实现。
如果希望向对象模型层次中引入 IComponent 类型,但由于单次继承的原因而不能从 Component 或 MarshalByValueComponent 之类的基派生,请实现IComponent。
如果需要提供用户界面的可设计类,则该类是控件。控件必须直接或间接从下列基控件类之一派生:System.Windows.Forms.Control 或 System.Web.UI.Control。
注意
如果您的类既不是可设计类,也不保存外部资源,则不需要 IComponent 或 IDisposable 类型。
下面是组件、控件、容器和站点的定义。
组件
在 .NET Framework 中,组件是指实现 System.ComponentModel.IComponent 接口的一个类,或从实现 IComponent 的类中直接或间接派生的类。在编程中,“组件”这个术语通常用于可重复使用并且可以和其他对象进行交互的对象。.NET Framework 组件满足这些一般要求,另外还提供诸如控制外部资源和设计时支持等功能。
控制外部资源
IComponent 接口扩展 IDisposable 接口,后者在其协定中有一个名为 Dispose 的方法。在其 Dispose 方法实现中,组件必须显式释放外部资源。与垃圾回收过程中发生的默认、不确定的清理相比,这提供了一个确定的方法来释放资源。开发人员必须在整个包容层次结构中传播 Dispose以确保组件的子级同时释放资源。另外,派生的组件必须调用其基类的Dispose 方法。
注意
即使通过 Dispose 提供对资源的显式控制,也应该始终通过终结器(析构函数)提供隐式清理,以防用户未能对您的组件调用 Dispose 时资源永久泄漏。
下面的示例显示了在基组件和在派生的组件中实现 Dispose 的方式。
C#
public class BaseComponent : IComponent {
// IComponent extends IDisposable.
public void Dispose() {
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing) {
if (disposing) {
// Free other state (managed objects).
}
// Free your own state (unmanaged objects).
}
// Simply call Dispose(false).
~BaseComponent(){
Dispose (false);
}
}

// Derived component.
public class DerivedComponent : BaseComponent {
protected override void Dispose(bool disposing) {
if (disposing) {
// Free other state.
}
// You must invoke the Dispose method of the base class.
base.Dispose(disposing);
// Free your own state.

}
// No finalizer/destructor.
// No Dispose() method.
}
设计时支持
在 .NET Framework 中,组件的一个重要功能就是它们是可设计的,这意味着作为组件的类可用于快速应用程序开发 (RAD) 环境(如 Visual Studio)中。可将组件添加到 Visual Studio 的工具箱中,也可将组件拖放到某个窗体上,还可以在设计图面上对组件进行操作。请注意,对 IComponent 类型的基本设计时支持已经内置于 .NET Framework 中;组件开发人员无须进行额外的工作就可利用基本设计时功能。
有关设计时支持的更多信息,请参见组件的设计时属性 (Attribute) 和扩展设计时支持。
承载组件
组件可以被放置(承载)在一个容器(本主题稍后部分进行了定义)中。当组件被放置后,它通过其站点(本主题稍后部分进行了定义)与容器进行交互并能够通过站点从其容器查询并得到服务。为了确保容器拆卸后资源被释放,容器必须实现 IDisposable 接口。在其 Dispose 方法的实现中,容器必须释放它保留的所有资源,并调用它包含的每个组件的 Dispose 方法。
包容是逻辑上的,不需要可视的表示形式。放置数据库组件的中间层容器就是非可视包容的一个示例。可在 Visual Studio 的 Windows 窗体设计器和 Web 窗体设计器中找到可视包容。可视化设计图面是承载窗体组件(Web 窗体中的页组件)的容器。
封送组件
组件可以是可远程控制的或不可远程控制的。可远程控制的组件由引用或值进行封送。封送涉及跨边界(如应用程序域(轻量进程)、进程、甚至是计算机)发送对象。当对象由引用封送时,会创建一个代理对该对象进行远程调用。当对象由值进行封送时,跨相关边界发送该对象的一个序列化的副本。
以下可远程控制的组件应该由引用封送:封装系统资源的可远程控制组件,较大的可远程控制组件或作为单个实例存在的可远程控制组件。由引用封送的组件的基类是System.ComponentModel.Component。该基类实现 IComponent 并从 MarshalByRefObject 派生。.NET Framework 类库中的许多组件从 Component 派生,包括System.Windows.Forms.Control(Windows 窗体控件的基类)、System.Web.Services.WebService(使用 ASP.NET 创建的 XML Web 服务的基类)和System.Timers.Timer(生成递归事件的类)。
仅保留状态的可远程控制组件应该由值封送。由值封送的组件的基类是 System.ComponentModel.MarshalByValueComponent。该基类实现 IComponent 并从 Object 派生。.NET Framework 类库中只有少量组件从 MarshalByValueComponent 派生。所有此类组件都在 System.Data 命名空间中(DataColumn、DataSet、DataTable、DataView 和 DataViewManager)。
注意
按值和按引用封送的对象的基类分别是 Object 和 MarshalByRefObject,但对应的派生类名为 MarshalByValueComponent 和 Component。命名方案背后的逻辑是越常用的类型,其名称就越简单。
如果不对组件进行远程控制,则不要从 Component 的基实现派生,而应直接实现 IComponent。
有关对象远程控制的更多信息,请参见 .NET 远程处理概述。
控件
控件是提供(或实现)用户界面 (UI) 功能的组件。.NET Framework 为控件提供两个基类:一个用于客户端 Windows 窗体控件,另一个用于 ASP.NET 服务器控件。它们是System.Windows.Forms.Control 和 System.Web.UI.Control。.NET Framework 类库中的所有控件直接或间接从这两个类派生。System.Windows.Forms.Control 从Component 派生,本身提供 UI 功能。System.Web.UI.Control 实现 IComponent 并提供可在其上轻松添加 UI 功能的基础结构。
注意
每个控件都是一个组件,但并不是每个组件都是控件。
在.net环境下编写Windows Form 控件非常的简单,只要直接和间接继承与System.Windows.Forms.Control即可,Control类为我们提供了很多高级的特性,如:窗口句柄、管理消息、鼠标和键盘事件、可视化属性(Color、Size、Position)、安全和线程支持等等,有了这些高级的特性,我们编写Windows Form 控件就简单的多,同时我们也可以把更多的精力放在我们应该关注的地方,如UI如何画、数据的Binding和显示
在.net下编写Windows Form 控件有三种方式,从System.Windows.Forms.Control派生的自定义控件、从已有的控件派生(如System.Windows.Forms.TextBox)的扩展控件、从System.Windows.Forms.UserControl派生的组合控件,很多的朋友都分不清楚UserControl和Control之间的区别,不知道到底从哪个类进行派生,简单的说:UserControl比Control更高级,提供了更多的高级特性,Control 类只提供控件所需的所有基本功能(包括鼠标和键盘处理事件),但不提供可视化的UI,所以说从Control派生的话,用户必须override OnPaint,UserControl相比Control为我们提供了更多的特性,但是UserControl也就失去了更多的灵活性
组件和控件的设计时考虑:
Designer顾名思义就是为Component设计时服务的,Designer可以在设计时修改组件的行为,还可以提供它自己的服务和行为。
在.net里要为Control或者Component定制Designer,只要从IDesigner继承下来即可,但是在.net里ms已经帮我们做了两个从IDesigner继承下来的基类,ComponentDesigner和ControlDesigner,ComponentDesigner是为Component而设计的,ControlDesigner是为Control而设计的,所以我们可以直接从ComponentDesigner继承。
Designer可以提供右键快捷菜单上的菜单命令,我们可以通过实现ComponentDesigner 谓词(Verbs) 属性来定义 get 访问器,该访问器返回的 DesignerVerbCollection 中包含用于生成菜单命令的 DesignerVerb 对象。同时我们对组件被双击时定制默认操作,在Component Designer实现 DoDefaultAction 方法即可
组件的文档设计器
每个Component不但是有Component Designer,而且还有Component DocumentDesigner,但这两个Designer之间到底有什么样的区别呢?我用比较通俗的讲法来给大家区别下,Component Designer是指一个Component被拖放到Form或者Page的Container上时所呈现出来的UI设计器(图1);Component DocumentDesigner则是指Component本身根文档设计器(图2)
12
容器和站点
如果您正在为 Windows 窗体或 Web 窗体页(ASP.NET 页)开发组件和控件,则不需要实现容器或站点。Windows 窗体和 Web 窗体的设计器就是 Windows 窗体和 ASP.NET 服务器控件的容器。容器向放置在其中的组件和控件提供服务。在设计时,控件放置在设计器中并从设计器获得服务。为了保持完整性,以下给出了容器和站点的定义。
Container
容器是一个实现 System.ComponentModel.IContainer 接口的类,或从实现该接口的类派生的类。容器在逻辑上包含一个或多个组件,这些组件叫做容器的子组件。
Site
站点是一个实现 System.ComponentModel.ISite 接口的类,或从实现该接口的类派生的类。站点由容器提供,用来管理其子组件及与子组件进行通信。通常,容器和站点作为一个单元来实现。

ASP.NET控件分别有哪些各有什么优势

页面控件(标准控件)用于页面设计,数据控件:用于数据库连接数据源配置,数据绑定显示方便数据显示(查询数据库的数据)
验证控件:用于验证输入数据是否为指定类型,是否为空,
WebParts
控件可创建拖动页面
主要用于网上上自定义布局
(qq空间)
Crystal
Reports
控件创建报表的
功能强大
方便
AJax
控件
用于创建局部刷新页面
现在主流

.NET的.NET控件

.NET标准控件根据其应用环境分为两类:
Windows Form控件:主要用于Windows应用程序的开发。所有的Windows控件都是从Control类中派生来的,该类包含了所有用户界面的Windows Form组件,其中也包括Form类。Control类中包括了很多位所有控件所共享的属性、事件和方法。它包含复选框、文本框、按钮、标签、图像列表等。
Web窗体控件:主要用于Web应用程序的开发。它是专门针对Asp.NETWeb窗体设计的服务器控件。Web窗体控件包含在命名空间System.Web.UI.WebControls中,当用户使用Visual Studio创建Web窗体页面时,会自动在后台代码文件中添加引用该命名空间的Using语句。
.NET Compact Framework 提供了可以满足大多数设备项目需要的Windows Form控件。若要使用这些控件没有的功能,可以从公共控件派生您自己的自定义控件。可以通过定义从 Control 类或从程序集中的现有 UserControl 继承的公共类型创建自定义控件。
最简单的控件自定义是重写公共控件的方法。例如,可以重写 TextBox 控件的 OnKeyPress 继承方法,提供将输入限制为数字字符的代码。
如若觉得自定义控件过于浪费时间和复杂,也可以从受信任的来源下载控件,并通过添加引用来导入自定义控件。支持这些自定义的.NET的控件有:ComponentOne Studio,Spread,ActiveReports、MultiRow 等。