我正在编写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
。
答案 0 :(得分:0)
不确定为什么您的IsNumber方法在设计模式下无法正常工作。解决这个问题的简单方法是,如果您处于设计模式,则不要调用该方法......
set
{
if (!DesignMode && !IsNumber(value))
throw new FormatException();
base.Text = value;
}
设计师以神奇的方式运作其奇迹。所以偶尔你需要测试设计模式,以保持它在我的经验中运作。