www.pudn.com > XPStyleNavControl_Test.rar > WebCustomControl.cs


using System; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.ComponentModel; 
 
namespace XPStyleNavControl 
{ 
	[DefaultProperty("Text"), 
	ToolboxData("<{0}:WebCustomControl runat=server>")] 
	public class WebCustomControl : System.Web.UI.WebControls.WebControl 
	{ 
		#region 定义变量,默认值 
 
		private string text = ""; 
		private string href = ""; 
		private string target = "_self"; 
		private bool displayPipe = true; 
		private ColorStyle colorstyle=ColorStyle.Gray; 
 
		#endregion 
 
		#region 构造函数 
 
		public WebCustomControl():base(HtmlTextWriterTag.Div) 
		{ 
			 
		} 
		#endregion 
 
		#region 定义属性 
		[Description("该属性用于表示控件显示的文字内容"), 
		Bindable(true),  
		Category("XPStyleNavControlProperty"),  
		DefaultValue("")]  
		public string Text  
		{ 
			get 
			{ 
				return text; 
			} 
 
			set 
			{ 
				text = value;				 
			} 
		} 
 
		[Description("该属性用于表示控件显示的文字的超链接地址"), 
		Bindable(true),  
		Category("XPStyleNavControlProperty"),  
		DefaultValue("")]  
		public string Href  
		{ 
			get 
			{ 
				return href; 
			} 
 
			set 
			{ 
				href = value; 
			} 
		} 
 
		[Description("该属性用于表示控件显示超链接的目标框架"), 
		Bindable(true),  
		Category("XPStyleNavControlProperty"),  
		DefaultValue("_self")]  
		public string Target  
		{ 
			get 
			{ 
				return target; 
			} 
			set 
			{ 
				target = value; 
			} 
		} 
 
		[Description("该属性用于表示控件是否显示分隔符 | "), 
		Bindable(false),  
		Category("XPStyleNavControlProperty"),  
		DefaultValue(true)]  
		public bool DisplayPipe  
		{ 
			get 
			{ 
				return displayPipe; 
			} 
 
			set 
			{ 
				displayPipe = value; 
			} 
		} 
 
		[Description("控件宽度"), 
		Bindable(false), 
		Category("XPStyleNavControlProperty"), 
		DefaultValue("100%")] 
		public override Unit Width 
		{ 
			get 
			{ 
				return base.Width; 
			} 
			set 
			{ 
				base.Width = value; 
			} 
		} 
 
		[Description("控件颜色模式"), 
		Bindable(false), 
		Category("XPStyleNavControlProperty"), 
		DefaultValue(ColorStyle.Gray) 
		] 
		public ColorStyle ColorMode 
		{ 
			get 
			{ 
				return colorstyle; 
			} 
			set 
			{ 
				colorstyle=value; 
			} 
		} 
 
 
		#endregion 
 
 
		/// 
		///将自定义样式写入HTTP输出流中去 
		/// 
		protected override void AddAttributesToRender(HtmlTextWriter output) 
		{ 
			output.Write(""); 
			output.AddAttribute(HtmlTextWriterAttribute.Class,ColorMode.ToString()+"BackGround"); 
			output.AddStyleAttribute("width",Width.ToString()); 
												 
			base.AddAttributesToRender(output); 
		} 
 
		///   
		/// 呈现控件的方法RenderContents 
		///  
		protected override void RenderContents(HtmlTextWriter output) 
		{ 
			//定义样式 
			output.AddStyleAttribute(HtmlTextWriterStyle.Width,"10px"); 
			output.AddStyleAttribute(HtmlTextWriterStyle.FontSize,"12px"); 
			output.AddStyleAttribute(HtmlTextWriterStyle.FontFamily,"宋体"); 
			output.RenderBeginTag(HtmlTextWriterTag.Span); 
			 
			output.AddAttribute(HtmlTextWriterAttribute.Class,ColorMode.ToString()+"StyleOut");			 
			output.AddAttribute("onmouseout","this.className='"+ColorMode.ToString()+"StyleOut'"); 
			output.AddAttribute("onmouseover","this.className='"+ColorMode.ToString()+"StyleOver'"); 
			 
			output.AddAttribute(HtmlTextWriterAttribute.Href,Href); 
			output.AddAttribute(HtmlTextWriterAttribute.Target,Target); 
			output.RenderBeginTag(HtmlTextWriterTag.A); 
			output.Write(text); 
			output.RenderEndTag(); 
			output.RenderEndTag(); 
 
			//定义分隔符及样式 
			if(DisplayPipe) 
			{ 
				output.AddAttribute(HtmlTextWriterAttribute.Class,ColorMode.ToString()+"Line"); 
				output.RenderBeginTag(HtmlTextWriterTag.Span); 
				output.Write("|"); 
				output.RenderEndTag(); 
			} 
			else 
			{ 
				output.RenderBeginTag(HtmlTextWriterTag.Span); 
				output.Write(" "); 
				output.RenderEndTag(); 
			} 
 
			//使用默认逻辑来呈现子控件 
			base.RenderContents(output); 
		} 
 
		public enum ColorStyle 
		{ 
			Gray,Blue 
		} 
	} 
}