Si no desea heredar directamente de WebControl en lugar de desde el Panel, la manera más fácil de hacerlo es decorar la clase con el atributo [ParseChildren(false)]
. Aunque a primera vista esto podría sugerir que no desea analizar los elementos secundarios, lo que el false
realmente indica es que no desea que los elementos secundarios sean tratados como propiedades. En cambio, desea que se los trate como controles.
Mediante el uso de este atributo, se obtiene prácticamente toda la funcionalidad de la caja:
[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>");
}
}
Esto le permitirá añadir controla RoundedBox a sus páginas, y agregar los niños (ya los controles ASP.NET o raw html) que se representará dentro de su div.
Por supuesto, se agregarán css para el estilo correcto de la clase roundedbox.
Esta es probablemente una pregunta muy estúpida, pero como no puedo colocar este código en un control de usuario típico (.ascx), ¿dónde lo pondría? Creé una clase y la coloqué allí, pero no sé cómo agregarla a una página (arrastrar solo crea un enlace) –
Publicar una pregunta sobre cómo usar los controles del Servidor ASP.NET, y puedo responder, No puedo incluir la explicación en este pequeño cuadro de comentarios. – FlySwat
Si compila el código, aparecerá en la caja de herramientas. –