首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

|M| 学写第一个自定义控件的最后一个有关问题:[DefaultProperty("Message")]无效

2012-01-24 
|M| 学写第一个自定义控件的最后一个问题:[DefaultProperty(Message)]无效[DefaultProperty( Message

|M| 学写第一个自定义控件的最后一个问题:[DefaultProperty("Message")]无效
[DefaultProperty( "Message "),   ToolboxData( " <{0}:WebRev   runat=server   /> ")]

我已经定义了属性
[Browsable(true),   Themeable(false),   Category( "我的属性 "),   DefaultValue( "* "),   Description( "当焦点在验证控件时显示的信息 ")]
public   String   Message
{
        get   {   return   _Message;   }
        set   {   _Message   =   value;   }
}

也就是要当控件拖到设计页面上的时候显示出来的属性值

但我的当不能正常的显示:我贴出所有源码
---------------------------------
using   System;
using   System.Configuration;
using   System.Web;
using   System.Web.Security;
using   System.Web.UI;
using   System.Web.UI.WebControls;
using   System.Web.UI.WebControls.WebParts;
using   System.Web.UI.HtmlControls;
using   System.ComponentModel;
using   System.Drawing;

namespace   zhang
{
        [DefaultProperty( "Message "),   ToolboxData( " <{0}:WebRev   runat=server   /> ")]
        [System.Drawing.ToolboxBitmap(typeof(RegularExpressionValidator))]
        public   class   webRev   :   System.Web.UI.WebControls.WebControl
        {
                #region   私有变量
                String   _Message   =   "* ";
                Boolean   _AlwaysShow   =   true;
                String   _FocusClientScript   =   " ";
                String   _BlurClientScript   =   " ";
                Boolean   _FieldValidator   =   true;
                String   _ErrorMessage   =   "* ";
                String   _ValidationExpression   =   " ";
                String   _ControlToValidate   =   " ";
                ValidatorDisplay   _Display   =   ValidatorDisplay.Dynamic;
                String   _NotNullMessage   =   "* ";
                Color   _ErrorColor   =   Color.Red;
                Color   _NotNullColor   =   Color.Red;
                String   _ValidationGroup   =   " ";
                //Color   _MessageColor   =   Color.Red;
                #endregion
                #region   设计属性
                [Browsable(true),   Themeable(false),   Category( "我的属性 "),   DefaultValue( "* "),   Description( "当焦点在验证控件时显示的信息 ")]
                public   String   Message


                {
                        get   {   return   _Message;   }
                        set   {   _Message   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "我的属性 "),   DefaultValue(true),   Description( "是否默认显示错误信息 ")]
                public   Boolean   AlwaysShow
                {
                        get   {   return   _AlwaysShow;   }
                        set   {   _AlwaysShow   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "我的属性 "),   DefaultValue( " "),   Description( "当焦点在验证控件时执行的脚本 ")]
                public   String   FocusClientScript
                {
                        get   {   return   _FocusClientScript;   }
                        set   {   _FocusClientScript   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "我的属性 "),   DefaultValue( " "),   Description( "当焦点离开验证控件时执行的脚本 ")]
                public   String   BlurClientScript
                {
                        get   {   return   _BlurClientScript;   }
                        set   {   _BlurClientScript   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "我的属性 "),   DefaultValue(true),   Description( "是否验证字段不为空 ")]
                public   Boolean   FieldValidator
                {
                        get   {   return   _FieldValidator;   }
                        set   {   _FieldValidator   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue( "* "),   Description( "验证无效时显示的出错信息 ")]
                public   string   ErrorMessage


                {
                        get   {   return   _ErrorMessage;   }
                        set   {   _ErrorMessage   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue( " "),   Description( "用于确定有效性的正则表达式 ")]
                public   string   ValidationExpression
                {
                        get   {   return   _ValidationExpression;   }
                        set   {   _ValidationExpression   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue( " "),   Description( "要验证的控件ID ")]
                [IDReferenceProperty,   TypeConverter(typeof(ValidatedControlConverter))]
                public   string   ControlToValidate
                {
                        get   {   return   _ControlToValidate;   }
                        set   {   _ControlToValidate   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue(ValidatorDisplay.Dynamic),   Description( "验证程序的显示方式 ")]
                public   ValidatorDisplay   Display
                {
                        get   {   return   _Display;   }
                        set   {   _Display   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue( "* "),   Description( "验证控件是不为空时出错信息 ")]
                public   string   NotNullMessage
                {
                        get   {   return   _NotNullMessage;   }
                        set   {   _NotNullMessage   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue(typeof(Color),   "Red "),   Description( "验证正则出错信息颜色 ")]


                [TypeConverter(typeof(System.Web.UI.WebControls.WebColorConverter))]
                public   Color   ErrorColor
                {
                        get   {   return   _ErrorColor;   }
                        set   {   _ErrorColor   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue(typeof(Color),   "Red "),   Description( "验证正则出错信息颜色 ")]
                [TypeConverter(typeof(System.Web.UI.WebControls.WebColorConverter))]
                public   Color   NotNullColor
                {
                        get   {   return   _NotNullColor;   }
                        set   {   _NotNullColor   =   value;   }
                }
                [Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue( " "),   Description( "验证控件组 ")]
                public   string   ValidationGroup
                {
                        get   {   return   _ValidationGroup;   }
                        set   {   _ValidationGroup   =   value;   }
                }

               
                //[Browsable(true),   Themeable(false),   Category( "验证属性 "),   DefaultValue(typeof(Color),   "Red "),   Description( "验证正则出错信息颜色 ")]
                //[TypeConverter(typeof(System.Web.UI.WebControls.WebColorConverter))]
                //public   Color   MessageColor
                //{
                //         get   {   return   _MessageColor;   }
                //         set   {   _MessageColor   =   value;   }
                //}

                #endregion

                protected   override   void   OnInit(EventArgs   e)
                {
                        RequiredFieldValidator   req   =   new   RequiredFieldValidator();


                        req.ControlToValidate   =   this.ControlToValidate;
                        req.ErrorMessage   =   this.NotNullMessage;
                        req.Display   =   this.Display;
                        req.ForeColor   =   this.NotNullColor;
                        req.ValidationGroup   =   ValidationGroup;
                        if   (FieldValidator   ==   true)   this.Controls.Add(req);


                        RegularExpressionValidator   reg   =   new   RegularExpressionValidator();
                        reg.ControlToValidate   =   this.ControlToValidate;
                        reg.ErrorMessage   =   this.ErrorMessage;
                        reg.ValidationExpression   =   this.ValidationExpression;
                        reg.Display   =   this.Display;
                        reg.ForeColor   =   this.ErrorColor;
                        reg.ValidationGroup   =   ValidationGroup;
                        this.Controls.Add(reg);

                        base.OnInit(e);
                }

                protected   override   void   AddAttributesToRender(HtmlTextWriter   writer)
                {
                        base.AddAttributesToRender(writer);
                }

                protected   override   void   Render(HtmlTextWriter   output)
                {    
                        base.Render(output);
                }

                protected   override   void   RenderChildren(HtmlTextWriter   writer)
                {
                        //base.RenderChildren(writer);
                        WebControl   c   =   (WebControl)this.Controls[1];
                        //c.Style.Add( "border ",   "solid   1px   red ");
                        //c.Style.Remove( "display ");


                        //c.Attributes.Add( "display ",   " ");
                        System.IO.StringWriter   sw   =   new   System.IO.StringWriter();
                        HtmlTextWriter   wt   =   new   HtmlTextWriter(sw);
                        c.RenderControl(wt);
                        writer.Write(sw.ToString().Replace( "display:none; ",   " "));                        

                        wt.Close();
                        sw.Close();

                        c   =   (WebControl)this.Controls[0];
                        c.RenderControl(writer);

                }              
        }
}
---------------------------
大家看看为什么默认显示的属性没有出来,而显示的是 "** "

[解决办法]
[Browsable(true), Themeable(false), Category( "我的属性 "), DefaultValue( "* "), Description( "当焦点在验证控件时显示的信息 ")]
public String Message
{
get { return _Message; }
set { _Message = value; }
}

改成
[Browsable(true), Themeable(false), Category( "我的属性 "), DefaultValue( "在这里输入数字 "), Description( "当焦点在验证控件时显示的信息 ")]
public String Message
{
get { return _Message; }
set { _Message = value; }
}

你的默认值得设成了*
我被LZ的学习精神 深深的感动了!
很多程序员正式缺少这一点啊,看到LZ我觉得我以后要加倍努力了

[解决办法]
自己做一个设计器.==

热点排行