ASP.NET自定义控件开发设计界面,设计时界面与运行时界面不同

设计类:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.IO;

namespace ServerControl2

{

public class Des:System.Web.UI.Design.ControlDesigner

{

public override string GetDesignTimeHtml()

{

StringWriter sw = new StringWriter();

HtmlTextWriter tw = new HtmlTextWriter(sw);

HyperLink hl = new HyperLink();

hl.Text = "Hello, Control";

hl.NavigateUrl = "http://www.microsoft.com/china/msdn";

hl.RenderControl(tw);

tw.Write(HtmlTextWriter.SpaceChar);

Label lbl = new Label();

lbl.BackColor = System.Drawing.Color.LemonChiffon;

lbl.Text = hl.NavigateUrl;

lbl.RenderControl(tw);

return sw.ToString();

}

}

}

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 ServerControl2

{

[Designer("ServerControl2.Des,ServerControl2"),DefaultProperty("Text")]

[ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]

public class ServerControl1 : WebControl,IPostBackEventHandler

{

[Bindable(true)]

[Category("Appearance")]

[DefaultValue("")]

[Localizable(true)]

public string Text

{

get

{

String s = (String)ViewState["Text"];

return "自定义控件aa";

}

set

{

ViewState["Text"] = value;

}

}

public int Speed

{

get;

set;

}

protected override void RenderContents(HtmlTextWriter output)

{

output.Write(Text);

output.Write(string.Format(@" <marquee width=400 scrollamount='{0}' behavior=alternate direction=left align=middle>弹来弹去跑马灯!</marquee>",Speed));

}

protected override void OnPreRender(EventArgs e)

{

}

protected override void AddAttributesToRender(HtmlTextWriter writer)

{

writer.AddAttribute(HtmlTextWriterAttribute.Onclick,"Javascript:"+Page.GetPostBackEventReference(this));

writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "red");

base.AddAttributesToRender(writer);

}

public event EventHandler click;

public void RaisePostBackEvent(string eventArgument)

{

Onclick(EventArgs.Empty);

}

protected virtual void Onclick(EventArgs ex)

{

if (click!=null)

{

click(this,ex);

}

// HttpContext.Current.Response.Redirect("http://www.baidu.com");

}

}

}