位置:海鸟网 > IT > ASP.NET >

Asp.net2.0之自定义控件ImageButton

前言

上个星期三开始学自定义控件,做了不少练习。花了一上午时间写了一个imageButton,以前就像写这个控件,只是不会。

图片

正文

这个控件模仿winform中的button,可以支持图片和文字。可以选择执行服务器端程序还是客户端程序,还有一些简单的设置。

不足的是不支持样式,下次希望可以写一个工具条。

以下就是代码

以下为引用的内容:

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

[1] [2] [3] 下一页