zoukankan      html  css  js  c++  java
  • 我用C#写控件(带空值提示的文本框)

    我写了5年的应用程序了。客户的输入界面逻辑一直很烦人。
     
    “为什么程序老是提示我没有输入完整的关键数据。能不能不检测这一步和提示”,“这个框一定要输入吗?我不知道!”有些客户经常会给我来电这样说。我只能一次一次的给他们做解释“说明书上已经说了,这是你们业务上要求要输入的关键数据,是必要的唯一性检测。”。
     
    后来我自己用C#写了这个控件,可以在输入的文本框中当没有输入任何值时,会有“<关键值>”、“”等等。用户一看就知道,这里必须要他输入。
     
    代码如下:

        public class TextBox : System.Windows.Forms.TextBox
        {

            //转载时请自觉加上以下转载信息:

            /*王伟晔编写代码段

            * cgzwwy@126.com

             */
            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();
            }
        }

        
  • 相关阅读:
    通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[中]:管道如何处理请求
    通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求
    .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”
    [WCF]缺少一行代码引发的血案
    如何利用ETW(Event Tracing for Windows)记录日志
    .NET Core的日志[5]:利用TraceSource写日志
    .NET Core的日志[4]:将日志写入EventLog
    .NET Core的日志[3]:将日志写入Debug窗口
    .NET Core的日志[2]:将日志输出到控制台
    .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?
  • 原文地址:https://www.cnblogs.com/wenrenhua08/p/3993646.html
Copyright © 2011-2022 走看看