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>
|