Если вы не хотите наследовать непосредственно из WebControl, а не из Panel, самый простой способ сделать это - украсить класс атрибутом [ParseChildren(false)]
. Хотя на первый взгляд это может означать, что вы не хотите разбирать детей, что фактически указывает false
, так это то, что вы не хотите, чтобы дети рассматривались как свойства. Вместо этого вы хотите, чтобы с ними обращались как с элементами управления.
Используя этот атрибут, вы получите практически всю функциональность из коробки:
[ToolboxData("<{0}:RoundedBox runat=server></{0}:RoundedBox>")]
[ParseChildren(false)]
public class RoundedBox : WebControl, INamingContainer
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.Write("<div class='roundedbox'>");
}
public override void RenderEndTag(HtmlTextWriter writer)
{
writer.Write("</div>");
}
}
Это позволит вам добавить контроль RoundedBox на ваших страницах, а также добавить детей (либо элементов управления ASP.NET или raw html), который будет отображаться внутри вашего div.
Конечно, css будет добавлен, чтобы правильно создать класс roundedbox.
Это, наверное, очень глупый вопрос, но поскольку я не могу разместить этот код в типичном пользовательском элементе управления (.ascx), где бы я его поместил? Я создал класс и разместил его там, но тогда я не знаю, как добавить его на страницу (перетаскивание просто создает ссылку) – 2008-11-20 18:33:29
Задайте вопрос о том, как использовать элементы управления ASP.NET Server, и я могу ответить, Я не могу вписать объяснение в этот маленький блок комментариев. – FlySwat 2008-11-20 18:35:21