以下为引用的内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Web.UI;
using System.Drawing.Design;
using System.Drawing.Drawing2D;
namespace ClassLibrary1
{
[Serializable]
public class Picture
{
private Unit height = 16 ;
private string src = string .Empty;
[NotifyParentProperty( true )]
[Browsable( true ), Bindable( true ), Description( " 图片路径 " ), Category( " Appearance " )]
[Editor( " System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a " , typeof (UITypeEditor))]
public string Src
{
get { return this .src; }
set { this .src = value; }
}
[DefaultValue( typeof (Unit), " 16px " ) ]
[NotifyParentProperty( true )]
public Unit Height
{
get { return height; }
set { height = value; }
}
private Unit width = 16 ;
[NotifyParentProperty( true )]
[DefaultValue( typeof (Unit), " 16px " )]
public Unit Width
{
get { return width; }
set { width = value; }
}
public enum Align{Left ,Right }
}
[Serializable]
public class Label
{
private string text = string .Empty;
[NotifyParentProperty( true )]
public string Text
{
get { return text; }
set { text = value; }
}
private System.Drawing.Font fontFamily = new System.Drawing.Font( " 宋体 " , 8 );
[NotifyParentProperty( true )]
public System.Drawing.Font Font
{
get { return this .fontFamily; }
set { this .fontFamily = value; }
}
}
[PersistChildren( false )]
[ParseChildren( true )]
public class ImageButton:Control ,INamingContainer,IPostBackEventHandler
{
public enum RaiseEventType {Client,Server }
private Picture pic = new Picture();
private Picture.Align picAlign = Picture.Align.Left;
private Label label = new Label ();
private string jsFunction = string .Empty;
private static readonly object clickKey = new object ();
public enum TextAlign {Left ,Center,Right }
[Browsable( true ), Bindable( true ), Description( " javascript 方法" ), Category( " Action " )]
public string JSFunction
{
get { return this .jsFunction; }
set { this .jsFunction = value; }
}
private RaiseEventType raiseEvent = RaiseEventType.Server ;
[Browsable( true ), Bindable( true ), Description( " 响应事件方式 " ), Category( " Action " )]
public RaiseEventType RaiseEvent
{
get { return this .raiseEvent; }
set { this .raiseEvent = value; }
}
private TextAlign align = TextAlign.Left;
[Browsable( true ), Bindable( true ), Description( " 文字的对齐方式 " ), Category( " Appearance " )]
public TextAlign ALign
{
get { return align; }
set { align = value; }
}
private Unit width = 80 ;
[Browsable( true ), Bindable( true ), Description( " 控件宽度 " ), Category( " Appearance " )]
[DefaultValue( typeof (Unit), " 80px " ) ]
public Unit Width
{
get { return this .width; }
set { this .width = value; }
}
[Browsable( true ),Bindable( true ),Category( " Action " )]
public event EventHandler OnClick
{
add
{
Events.AddHandler(clickKey ,value);
}
remove
{
Events.RemoveHandler(clickKey ,value);
}
}
[Browsable( true ), Bindable( true ), Description( " 图片类 " ), Category( " Appearance " )]
public Picture.Align PicAlign
{
get { return picAlign; }
set { picAlign = value; }
}
[Browsable( true ),Bindable( true ),Description( " 图片类 " ),Category( " Appearance " )]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content) ]
[TypeConverter( typeof (ExpandableObjectConverter))]
[PersistenceMode(PersistenceMode.InnerProperty)]
public Picture Pic
{
get { return pic; }
}
[Browsable( true ),Bindable( true ),Description( " 文字类 " ),Category( " Appearance " )]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content) ]
[TypeConverter( typeof (ExpandableObjectConverter) )]
[PersistenceMode(PersistenceMode.InnerProperty)]
public Label Label
{
get { return label; }
}
protected override void Render(HtmlTextWriter writer)
{
if (raiseEvent == RaiseEventType.Server)
{
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.GetPostBackEventReference( this , this .ClientID));
}
else
{
writer.AddAttribute(HtmlTextWriterAttribute.Onclick ," javascript: " + this .jsFunction);
}
writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor , " hand " );
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, this .width.Value.ToString() + " px " );
if (align == TextAlign.Left)
{
writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign , " left " );
}
else if (align == TextAlign.Center)
{
writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, " center " );
}
else
{
writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign ," right " );
}
writer.RenderBeginTag(HtmlTextWriterTag.Div );
if (PicAlign == Picture.Align.Left)
{
AddPic(writer);
AddLabel(writer);
}
else
{AddLabel(writer);
AddPic(writer);
}
writer.RenderEndTag();
// base.Render(writer);
}
private void AddPic(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Src, base .ResolveClientUrl(pic.Src));
writer.AddAttribute(HtmlTextWriterAttribute.Height ,pic.Height.ToString());
writer.AddAttribute(HtmlTextWriterAttribute.Width ,pic.Width.ToString());
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
// writer.Write(" ");
}
private void AddLabel(HtmlTextWriter writer)
{
writer.AddStyleAttribute(HtmlTextWriterStyle.VerticalAlign, " middle " );
writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize ,label.Font.Size.ToString() + " pt " );
writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily,label.Font.FontFamily.Name );
if (label.Font.Bold)
{
writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, " Bold " );
}
writer.RenderBeginTag(HtmlTextWriterTag.Label);
writer.Write(label.Text == string .Empty ? this .ClientID.ToString():label.Text);
writer.RenderEndTag();
// writer.Write("" + Label.Text + " ");
}
#region IPostBackEventHandler 成员
public void RaisePostBackEvent( string eventArgument)
{
EventHandler e = (EventHandler)Events[clickKey];
if (e != null )
{
e( this ,EventArgs.Empty );
}
}
#endregion