Mega Code Archive

 
Categories / ASP.Net Tutorial / Custom Controls
 

Creating a Container ControlDesigner

Add a reference to the System.Design.dll assembly to your application. using System; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.Design; using System.ComponentModel; using System.Drawing; namespace myControls {     [Designer(typeof(GradientPanelDesigner))]     [ParseChildren(false)]     public class GradientPanel : WebControl     {         private GradientDirection _direction = GradientDirection.Horizontal;         private Color _startColor = Color.DarkBlue;         private Color _endColor = Color.White;         public GradientDirection Direction         {             get { return _direction; }             set { _direction = value; }         }         public Color StartColor         {             get { return _startColor; }             set { _startColor = value; }         }         public Color EndColor         {             get { return _endColor; }             set { _endColor = value; }         }         protected override void AddAttributesToRender(HtmlTextWriter writer)         {             writer.AddStyleAttribute(HtmlTextWriterStyle.Filter, this. GetFilterString());             base.AddAttributesToRender(writer);         }        public string GetFilterString()         {             return String.Format("progid:DXImageTransform.Microsoft.Gradient (gradientType={0},startColorStr={1},endColorStr={2})", _direction.ToString("d"), ColorTranslator.ToHtml(_startColor), ColorTranslator.ToHtml(_endColor));         }         public GradientPanel()         {             this.Width = Unit.Parse("500px");         }         protected override HtmlTextWriterTag TagKey         {             get             {                 return HtmlTextWriterTag.Div;             }         }     }     public enum GradientDirection     {         Vertical = 0,         Horizontal = 1     }     public class GradientPanelDesigner : ContainerControlDesigner     {         protected override void AddDesignTimeCssAttributes(System.Collections. IDictionary styleAttributes)         {             GradientPanel gPanel = (GradientPanel)this.Component;             styleAttributes.Add("filter", gPanel.GetFilterString());             base.AddDesignTimeCssAttributes(styleAttributes);         }     } }              Open the page in Design view in either Visual Web Developer or Visual Studio .NET. File: ShowGradientPanel.aspx <%@ Page Language="C#" %> <%@ Register TagPrefix="custom" Namespace="myControls" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">     <title>Show GradientPanel</title> </head> <body>     <form id="form1" runat="server">     <div>     <custom:GradientPanel         id="GradientPanel1"         Runat="server">         <asp:Calendar             ID="Calendar1"             runat="server" />     </custom:GradientPanel>     </div>     </form> </body> </html>