用C#写控件(带空值提示的文本框)

翻译|其它|编辑:郝浩|2007-10-08 09:51:42.000|阅读 1544 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

为什么程序老是提示我没有输入完整的关键数据。能不能不检测这一步和提示这个框一定要输入吗?我不知道!有些客户经常会给我来电这样说。我只能一次一次的给他们做解释说明书上已经说了,这是你们业务上要求要输入的关键数据,是必要的唯一性检测。

 

后来我自己用  C#写了这个控件,可以在输入的文本框中当没有输入任何值时,会有“<关键值>”“”等等。用户一看就知道,这里必须要他输入。

代码如下:

    public class TextBox : System.Windows.Forms.TextBox
    {
        public TextBox()
            : base()
        {
            processDefaultValue();
        }

        protected override void OnVisibleChanged(EventArgs e)
        {
            base.OnVisibleChanged(e);
            processDefaultValue();
        }

        protected override void OnMouseClick(System.Windows.Forms.MouseEventArgs e)
        {
            base.OnMouseClick(e);
            base.SelectAll();
        }

        private System.String strEmptyValue = System.String.Empty;
        public System.String EmptyValue//
记录空值的表现
        {
            get { return strEmptyValue; }
            set
            {
                if (base.Text == strEmptyValue)
                    base.Text = value.Trim();
                strEmptyValue = value.Trim();
                processDefaultValue(); }
        }

        protected override void OnValidating(System.ComponentModel.CancelEventArgs e)//覆盖  TextBox  验证处理
        {
            processDefaultValue();
            base.OnValidating(e);
        }

        public override string Text//覆盖  Text  属性
        {
            get
            {
                return base.Text.Trim() == strEmptyValue.Trim() ? System.String.Empty : base.Text.Trim();
            }
            set
            {
                base.Text = value;
                processDefaultValue();
            }
        }

        void processDefaultValue()//处理表现空值的方法
        {
            base.Text = base.Text.Trim().Length <= 0 ? strEmptyValue : base.Text.Trim();
        }
    }

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:CSDN

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP