using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace CustControls
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyPageControl runat=server></{0}:MyPageControl>")]
public class MyPageControl : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
} set
{
ViewState["Text"] = value;
}
} protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
} public override ControlCollection Controls
{
get
{
//确定服务器是否包含子控件
EnsureChildControls();
return base.Controls;
}
} //声明子控件 private TextBox tb1;
private Button btn1; protected override void CreateChildControls()
{
tb1 = new TextBox();
btn1 = new Button();
btn1.Text = "mybtn1";
tb1.Text = "mytb1";
tb1.ID = "tb1";
btn1.ID = "btn1";
tb1.Width = 30;
btn1.Width = 30;
this.Controls.Add(tb1);
this.Controls.Add(btn1);
base.CreateChildControls();
} protected override void Render(HtmlTextWriter output)
{
AddAttributesToRender(output);
output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Cellpadding, "0", false);
//制定一个表
output.RenderBeginTag(HtmlTextWriterTag.Table); //表
output.RenderBeginTag(HtmlTextWriterTag.Tr); //行
//把控件在页面上呈现(画)出来
output.RenderBeginTag(HtmlTextWriterTag.Td); //列
tb1.RenderControl(output);
btn1.RenderControl(output);
output.RenderEndTag(); base.Render(output);
}
}
}重新生成后, 把生成的控件拖放在页面上,页面上什么也看不到,代码如下: <cc1:MyPageControl ID="MyPageControl1" runat="server" />浏览这个页面,也是什么没有?
另外你缺少了
2个
output.RenderEndTag();
output.RenderEndTag();