using System;
using System.Web.UI;
using System.ComponentModel;
using System.Text;
//这四句代码是引入命名空间。ComponentModel这个命名空间是制作组件不可缺少的。
[assembly:TagPrefix("MyLibrary", "MyComponet")]
//使用TagPerfix()来标示自定义组件的标记前缀,这样,就可以使用标记前缀来调用组件了。本例中我们建立的命名空间名为MyLibrary,但是我想使用MyComponent这个名字来调用控件,就需要在开始部分加入此句代码。加入代码后,组件在页面中的调用代码如下:
<MyCompnent:Hello Text="这是我的简单组件" runat=server></Mycomponent:Hello>
namespace MyLibrary //命名空间
{
[DefaultProperty("Text"), ToolboxData("<{0}:Hello runat=server></{0}:Hello>")]
//DefaultProperty(“Text”):此句代码是制定组件的默认属性,属性名称为Text。
//ToolboxData("<{0}:Hello runat=server></{0}:Hello>"):此句代码的作用是指定当从 Visual Studio 等工具中的工具箱拖动自定义控件时为它生成的默认标记。如果我们想让这个组件在添加时就有默认的Text值,那么只需要修改如下: ToolboxData("<{0}:Hello text=这是我的组件 runat=server></{0}:Hello>"),这样先
public class Hello:Control //定义了一个Control类,一般组件都是继承于System.Web.UI.Contro 类或 System.Web.UI.Control.WebControl类
{
private string text; //定义一个私有变量 text
public Hello() //析构函数,用于创建Hello类时执行
{
}
[Bindable(true),Category("Appearance"),DefaultValue("HelloAspNet")]
//表示下面的属性显示在IDE界面的属性中
public String Text
{
get { return text; }
set { text = value; }
}
protected override void Render(HtmlTextWriter writer)
//重写 Render函数 组件在编辑或发布后的显示效果,Render函数是每个组件类都需要写的一个函数,用于输出组件在页面中的显示情况。
{
writer.Write(Text);
base.Render(writer);
}
}
}