Существует два способа сделать это. Нужно реализовать INamingContainer на Вашем управлении, и прилагает много усилий.
другой путь состоит в том, чтобы наследоваться Панели и переопределить методы RenderBeginTag и RenderEndTag для добавления пользовательской разметки. Это легко.
public class RoundedCornersPanel : System.Web.UI.WebControls.Panel
{
public override RenderBeginTag (HtmlTextWriter writer)
{
writer.Write("Your rounded corner opening markup");
base.RenderBeginTag(writer);
}
public override RenderEndTag (HtmlTextWriter writer)
{
base.RenderEndTag(writer);
writer.Write("Your rounded corner closing markup");
}
}
Создайте класс, который наследовал Систему. Сеть. UI.Control и переопределение Рендеринг (HtmlTextWriter) метод. В этом методе представьте окружающие теги запуска, затем представьте детей (RenderChildren), затем представьте конечные тэги.
protected override void Render ( HtmlTextWriter output )
{
output.Write ( "<div>" );
RenderChildren ( output );
output.Write ( "</div>" );
}
Скругленные углы обычно достигается с помощью CSS и угловых изображений для верхнего левого, верхнего правого, нижнего левого и правых нижних углов. Это могло быть сделано с помощью 4 вложенных отделений, действуя как слои, каждый из них имеющий одно угловое изображение как их фоновое изображение.
Проект кода имеет что-то, что могло бы заинтересовать Вас: Контейнер Кривой Панели - Самородок Пользовательского элемента управления ASP.NET . Я уверен, что можно играть с кодом и иметь поведение и посмотреть, Вы хотите.
Просто другая вещь, которую можно использовать, существует расширитель скругленного угла в ASP.NET ajax инструментарий.
я знаю, что это не точно, что Вы попросили, но Вы не должны писать пользовательский код.
Hope, которая помогает!
public class myCustomPanel : Panel
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Class, "top_left_corner");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
base.RenderBeginTag(writer);
}
public override void RenderEndTag(HtmlTextWriter writer)
{
base.RenderEndTag(writer);
writer.RenderEndTag();
}
}