自定义控件的实现

[DefaultProperty("Text")]//(打开属性时)默认选择的属性

    [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]//自定义服务器控件在页面上面显示的标记

    public class ServerControl1 : WebControl

    {

        [Bindable(true)]//是否通常绑定

        [Category("外观")]

        [DefaultValue("")]

        [Description("显示的文本")]//属性的描述

        [Localizable(true)]

        public string Text

        {

            get

            {

                String s = (String)ViewState["Text"];

                return ((s == null) ? "[" + this.ID + "]" : s);

            }



            set

            {

                ViewState["Text"] = value;

            }

        }

        private string imageurl;

        [Description("要显示图片的路径")]//属性的描述

        [Category("样式")]

        [EditorAttribute(typeof(ImageUrlEditor), typeof(UITypeEditor))]//让属性里面有选择图片的按钮”...“

        public string Imageurl

        {

            get { return imageurl; }

            set { imageurl = value; }

        }

        [Bindable(true)]//是否通常绑定

        [Category("字体")]

        [DefaultValue("")]

        [Description("设置文本框的字体的大小单位为px")]//属性的描述

        [Localizable(true)]

        public string Fontsize

        {

            get

            {

                String font = (String)ViewState["Fontsize"];

                return ((font == null) ? "14px" : font + "px");

            }

            set { ViewState["Fontsize"] = value; }

        }

        protected override void Render(HtmlTextWriter Write)

        {

            string path = "";

            if (imageurl != null)

            {

                path = this.ResolveClientUrl(Imageurl);//取图片路径对应的在客户端的路径

            }

            WebColorConverter wcolor = new WebColorConverter();//进行颜色转换为RGB格式//在RGB和color间切换的对象

            Write.Write("<input type=\"text\" id=\"" + this.ID + "\" name=\"" + this.ID + "\" style=\"background-color:" + wcolor.ConvertToString(base.BackColor) + " ;background-image:url(" + path + "); font-size:" + Fontsize + "\" value=\"");

            Write.Write(Text);

            Write.Write("\"/>");

        }

    }

你可能感兴趣的:(自定义控件)