如何验证价格(数字)文本框?

时间:2013-05-23 15:46:51

标签: c# winforms visual-studio-2010

我有一个用C#编写的Windows窗体应用程序。

我正在寻找一种方法来验证我的价格textBox,以便它只接受双重格式的价格,例如允许0.01& 1200.00但在用户输入字符时提供错误。

我会将代码看起来与

类似
String price = tbx_price.Text.Trim();

if price is not a number
{
   error message
}
else{
...

我可以用什么方法来检查价格字符串是否只包含数字?请注意,我要求用户能够使用小数位,所以'。'应该允许角色。

3 个答案:

答案 0 :(得分:7)

使用decimal.TryParse

decimal d;
if (!decimal.TryParse(price, out d)){
    //Error
}

如果您还要验证价格145.255无效):

if (!(decimal.TryParse(price, out d) 
           && d >= 0 
           && d * 100 == Math.Floor(d*100)){
    //Error
}

答案 1 :(得分:3)

您可以使用decimal.TryParse()进行测试。

例如:

decimal priceDecimal;
bool validPrice = decimal.TryParse(price, out priceDecimal);

如果您无法确定线程文化是否与用户的文化相同,请使用接受文化格式的TryParse()重载(也可以设置为货币的数字格式):< / p>

public bool ValidateCurrency(string price, string cultureCode)
{
    decimal test;
    return decimal.TryParse
       (price, NumberStyles.Currency, new CultureInfo(cultureCode), out test);
}

if (!ValidateCurrency(price, "en-GB"))
{
    //error
}

答案 2 :(得分:0)

除了使用标记为已接受的答案以避免文化对价格的问题外,您始终可以使用此

Convert.ToDouble(txtPrice.Text.Replace(".", ","));
Convert.ToDouble(txtPrice.Text.Replace(",", "."));

这取决于您在应用中管理转化的方式。

PS:我无法评论答案,因为我还没有获得必要的声誉。