使用Text属性检查自定义TextBox时出错

时间:2017-12-03 08:23:20

标签: c# winforms

我正在编写NumberTextbox,它扩展了Winforms的标准Textbox类。该类包括Text属性的以下覆盖:

    [DefaultValue("")]
    public override string Text
    {
        get
        {
            return base.Text;
        }

        set
        {
            if (!IsNumber(value))
                throw new FormatException();
            base.Text = value;
        }
    }

构造函数确实在Text属性中显式插入一个空字符串。当我尝试使用设计器将此文本框插入到表单中时,我得到FormatException。用return;替换抛出线修复了这个问题,但在我看来这是错误的。这个问题有更好的解决方案吗?请注意,IsNumber方法确实为空字符串返回true

1 个答案:

答案 0 :(得分:0)

不确定为什么您的IsNumber方法在设计模式下无法正常工作。解决这个问题的简单方法是,如果您处于设计模式,则不要调用该方法......

        set
        {
            if (!DesignMode && !IsNumber(value))
                throw new FormatException();
            base.Text = value;
        }

设计师以神奇的方式运作其奇迹。所以偶尔你需要测试设计模式,以保持它在我的经验中运作。