【发布时间】:2015-06-12 17:41:44
【问题描述】:
情况:
我正在用 .NET4.0 在 VS2013 中使用 C# 编写一个 Winforms 应用程序。
datagridview 中的某些单元格需要验证为格式正确的英国货币值。 dgv 单元格格式设置为带两位小数的货币。为了验证,我使用以下代码:
decimal convertedCurrency;
if (decimal.TryParse(dataGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString(), NumberStyles.Currency, null, out convertedCurrency))
{
if (convertedCurrency > columnDetails.MaxValue || convertedCurrency < 0)
{
this.ReportError(dataGrid, e, dataGrid.Columns[e.ColumnIndex].HeaderText + " must be between £0 and £" + columnDetails.MaxValue);
}
}
else
{
this.ReportError(dataGrid, e, "Incorrect format for a money value");
}
问题:
这很好用,除非用户输入的值超过两位小数,例如100.001。这被认为是有效的,并且这个值被写入数据库。
问题:
我如何才能最好地验证以捕获和处理小数点后两位以上的用户输入?我当然可以处理一些凌乱的字符串,但有没有更优雅的方式,最好继续使用 TryParse?
【问题讨论】:
-
请参阅stackoverflow.com/questions/13477689/… 以查找小数位数。只需验证它是
-
真的很有帮助@JaredMoore。如果这是答案而不是 cmets,我会支持你。
-
干杯,转换为答案。
标签: c# winforms validation currency tryparse