【发布时间】:2011-04-22 18:31:07
【问题描述】:
我正在编写以下 get 和 set 来验证来自文本框的输入。基本上它应该检查用户是否输入了所有值。 当我将 TextBoxes 留空时,它什么也不做,并在使用该变量的输出中显示“0”。但是它确实显示了系统生成的异常并停止执行,但我想知道它为什么不通过属性验证输入?
这是我的代码:
public double RecoDoseSize
{
get
{
return recoDoseSize;
}
set
{
if (!(value>0))
{
MessageBox.Show("Please Enter the recommended dose size for this product");
textBox8.Focus();
}
recoDoseSize = value;
}
}
private void Submit2_Click(object sender, RoutedEventArgs e)
{
TotalContentProduct = double.Parse(textBox7.Text);
recoDoseSize = double.Parse(textBox8.Text);
NoOfDosespUnit = TotalContentProduct/recoDoseSize;
}
【问题讨论】:
-
我对代码示例不是很清楚。 recoDoseSize 是否与 RecoDoseSize 相同,或者它是一个不相关的私有变量?你指的是this.RecoDoseSize吗?
-
在您描述的情况下得到 0 的原因是 ParseMethod 在文本框中的 Text 属性的默认值上尽力而为。
-
@dawebber:由于 RecoDoseSize 的 getter 返回 recoDoseSize,我猜它们是相关的。 ;-)
-
您需要注意 RecoDoseSize 是否为 0(零)以避免您让用户进入的讨厌的除零。另外,如果这是在其他人可能使用的“公共”库中,我会将属性重命名为 DoseSize 或 RecommendedDoseSize:我的第一个问题是“Reco”到底是什么。
-
@Heinzi——在这个代码示例中有很多东西需要猜测。我评论的真正目的是向 OP 证明应该更具体地使用代码示例。不过我同意你的看法,这是一个答案:使用属性,而不是私有变量。
标签: c# wpf validation get set