У меня есть похожая заготовка. Может поможет. Тут тоже две панели, и в каждой по одному лабелу. Думаю разберёшься. | Код | using System; using System.ComponentModel; using System.Drawing; using System.Security.Permissions; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;
namespace MessagePanelControlLibrary { [ AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] [DefaultProperty("MessageLabelText")] [ToolboxData("<{0}:MessageComponent runat=server></{0}:MessageComponent>")] public class MessageComponent : CompositeControl { private bool ControlsCreated = false; private Panel InfoPanel; private Label InfoLabel; private Panel MessagePanel; private Label MessageLabel;
#region AppearanceRegion
[ Bindable(true), Category("Appearance"), DefaultValue(""), Description("The text to display on the InfoLabel.") ] public string InfoLabelText { get { EnsureChildControls(); return InfoLabel.Text; } set { EnsureChildControls(); InfoLabel.Text = value.Replace("\n", "<br />"); } }
[ Bindable(true), Category("Appearance"), DefaultValue(""), Description("The text to display on the MessageLabel.") ] public string MessageLabelText { get { EnsureChildControls(); return MessageLabel.Text; } set { EnsureChildControls(); MessageLabel.Text = value.Replace("\n", "<br />"); } }
[ Bindable(true), Category("Appearance"), DefaultValue(""), Description("The BackColor property of InfoPanel.") ] public Color InfoPanelBackColor { get { EnsureChildControls(); return InfoPanel.BackColor; } set { EnsureChildControls(); InfoPanel.BackColor = value; } }
[ Bindable(true), Category("Appearance"), DefaultValue(""), Description("The BackColor property of MessagePanel.") ] public Color MessagePanelBackColor { get { EnsureChildControls(); return MessagePanel.BackColor; } set { EnsureChildControls(); MessagePanel.BackColor = value; } }
[ Bindable(true), Category("Appearance"), DefaultValue(""), Description("The BorderColor of panels.") ] public Color PanelsBorderColor { get { EnsureChildControls(); return MessagePanel.BorderColor; } set { EnsureChildControls(); MessagePanel.BorderColor = value; InfoPanel.BorderColor = value; } }
[ Bindable(true), Category("Appearance"), DefaultValue(""), Description("The BorderStyle of panels.") ] public BorderStyle PanelsBorderStyle { get { EnsureChildControls(); return MessagePanel.BorderStyle; } set { EnsureChildControls(); MessagePanel.BorderStyle = value; InfoPanel.BorderStyle = value; } }
#endregion
protected override void RecreateChildControls() { EnsureChildControls(); }
protected override void CreateChildControls() { Controls.Clear();
InfoLabel = new Label(); InfoLabel.ID = "InfoLabel"; InfoLabel.Text = "InfoLabel";
InfoPanel = new Panel(); InfoPanel.ID = "InfoPanel"; InfoPanel.Controls.Add(InfoLabel); InfoPanel.BackColor = Color.Aqua; InfoPanel.Width = Unit.Pixel(100);
MessageLabel = new Label(); MessageLabel.ID = "MessageLabel"; MessageLabel.Text = "MessageLabel";
MessagePanel = new Panel(); MessagePanel.ID = "MessagePanel"; MessagePanel.Controls.Add(MessageLabel); MessagePanel.BackColor = Color.Red; MessagePanel.Width = Unit.Pixel(400);
this.Controls.Add(InfoPanel); this.Controls.Add(MessagePanel); ControlsCreated = true;
}
protected override void Render(HtmlTextWriter writer) { if (!ControlsCreated) CreateChildControls(); AddAttributesToRender(writer);
//writer.AddAttribute(HtmlTextWriterAttribute.Bordercolor, "black"); //writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0"); //writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0"); //writer.AddAttribute(HtmlTextWriterAttribute.Border, "solid");
writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td); InfoPanel.RenderControl(writer); writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td); MessagePanel.RenderControl(writer); writer.RenderEndTag();
writer.RenderEndTag(); writer.RenderEndTag(); } } }
|
Как ты видишь, панели рисуються в ячейкаж простой html таблицы. writer.RenderBeginTag(HtmlTextWriterTag.Tr) - начинает новую строку writer.RenderBeginTag(HtmlTextWriterTag.Td) - начинает новый столбец writer.RenderEndTag() - закрывает открытый тэг
|