TryParse失败,参数的货币字符串类型

时间:2013-03-13 19:30:40

标签: c# winforms

我的表单中有文本框,其中包含数量的数字。然后在textchanged事件中,该号码被放置在具有货币值的标签的文本属性中(例如:$ 4.00)。在我的按钮单击事件中,我试图添加标签中的所有值。使用以下代码时,tryparse每次都失败

int num1;
string text = lbl85x11bwsub.Text;
if (int.TryParse(text, out num1)) 
{
     MessageBox.Show(num1.ToString()); //testing
}
else
{
      MessageBox.Show("it failed");
}

但如果我使用文本框的文本属性尝试相同的操作,它就可以工作。

int num2;
if (int.TryParse(txt85x11bw.Text, out num2)) 
{
     MessageBox.Show(num2.ToString());
}
else
{
      MessageBox.Show("it failed");
 }

3 个答案:

答案 0 :(得分:12)

@Frederik Gheysels给你几乎完整的答案,除了一件小事。在这种情况下,您应该使用NumberStyles.Currency,因为您的数字不仅可以不是整数,还包含千位和小数分隔符。虽然NumberStyles.AllowCurrencySymbol只关心货币符号。另一方面,NumberStyles.Currency is a composite number style.几乎可以允许所有其他分隔符。

所以,这个表达式可能会起作用:

Decimal.TryParse(text, 
    NumberStyles.Currency, 
    CultureInfo.CurrentCulture, 
    out result);

答案 1 :(得分:6)

尝试

Decimal.TryParse(text, 
    NumberStyles.Currency, 
    CultureInfo.CurrentCulture, 
    out result);

代替。 您要解析的数字是:

  • 不是整数
  • 包含货币符号

答案 2 :(得分:0)

使用NumberStyles.Currency代替NumberStyles.AllowCurrencySymbol

请参阅How to parse string to decimal with currency symbol?