OnUnload 引发 Unload 事件。 注意 在服务器控件生存期的此阶段,服务器控件应执行所有最后的清理操作,例如关闭文件、关闭数据库连接和丢弃对象。
RaiseBubbleEvent 将所有事件源及其信息分配给控件的父级。
Render 将服务器控件内容发送到提供的 HtmlTextWriter 对象,此对象编写将在客户端呈现的内容。
RenderChildren 将服务器控件子级的内容输出到提供的 HtmlTextWriter 对象,此对象编写将在客户端呈现的内容。
SaveViewState 保存自页回发到服务器后发生的任何服务器控件视图状态更改。
TrackViewState 导致跟踪服务器控件的视图状态的更改,以便这些更改可以存储到服务器控件的 StateBag 对象中。通过 Control.ViewState 属性可访问此对象。
这里我们要重写Render方法,通过HtmlTextWriter 对象将控件中的内容显示出去。
namespace SelfWebControl { public class ControlA:Control//Control类中定义了所有ASP.NET服务器控件共享的属性和方法 { protected override void Render(HtmlTextWriter writer) { writer.Write("<table>"); writer.Write("<tr>"); writer.Write("<td>这是第一列</td>"); writer.Write("<td>这是第二列</td>"); writer.Write("<td>这是第三列</td>"); writer.Write("</tr>"); writer.Write("</table>"); } } }
生成我们得SelfWebControl工程,再切换到ASP.NET应用程序的工具箱时,VS2008会自动的将我们刚刚创建的ControlA添加到工具箱中,避免了我们以前通过选择项添加控件的过程。
这样,我们就已最简单的形式实现了一个ASP.NET服务器控件。但是如果我想修改表格的宽度,高度,背景色该怎么改呢?
这就需要我们定义服务器控件的属性。大家也都知道,ASP.NET的服务器控件有很多属性,而我们现在的控件只有公有的几个属性。
先来看看我们做了那些改动:
public class ControlA:Control//Control类中定义了所有ASP.NET服务器控件共享的属性和方法 { private int _tWidth; private int _tHeight; private string _bgColor; [Browsable(true)]//在属性窗口中是否可见 [Category("Appearance")]//属性的分类,如,行为,外观,大家可以在属性窗口看见这样的分类 [DefaultValue(100)]//属性的默认值 [Description("表格宽度")]//这些是显示在属性窗口底下的 public int tWidth { get { return _tWidth; } set { _tWidth = value; } } [Browsable(true)] [Category("Appearance")] [DefaultValue(100)] [Description("表格高度")] public int tHeight { get { return _tHeight; } set { _tHeight = value; } } [Browsable(true)] [Category("Appearance")] [DefaultValue("Bisque")] [Description("表格背景颜色")] public string bgColor { get { return _bgColor; } set { _bgColor = value; } } protected override void Render(HtmlTextWriter writer) { writer.Write("<table>"); writer.Write("<tr>"); writer.Write("<td>这是第一列</td>"); writer.Write("<td>这是第二列</td>"); writer.Write("<td>这是第三列</td>"); writer.Write("</tr>"); writer.Write("</table>"); } }