【发布时间】:2017-12-03 22:38:41
【问题描述】:
我正在写一个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。
【问题讨论】:
-
请在问题中添加
IsNumber实现 -
你可以考虑在how to make number only textbox阅读这个问题
-
您可能需要检查答案here 以涵盖处于设计模式(接受的答案可能不适用于您的场景,因此请注意,其他答案提供了针对不同上下文的解决方案)。或者在构造函数中设置
base.Text而不是Text属性。