WPF C#字符串为十进制,十进制为字符串问题

时间:2009-12-29 18:22:10

标签: c# wpf string decimal

请帮我识别我的C#代码(WPF,事件处理程序)中的问题:

        private void Discount5Btn_Click(object sender, RoutedEventArgs e)
    {
        decimal catPr;
        decimal salePr;
        string catPrStr;
        catPrStr = PriceCatTBox.Text;
        catPr = decimal.Parse(catPrStr);
        salePr = decimal.Multiply(catPr, 0.95m);
        SalePriceTBox.Text = (salePr).ToString("0000.00");
    }

我无法正常工作 - 调试器在catPr = decimal.Parse(catPrStr);上显示错误。在另一个地方非常相似的代码有效。我是否正确采用字符串十进制转换进行算术运算?

修改(已添加)

很抱歉没有指定 catPrStr值,它来自以下代码中的文本框(在另一个事件处理程序中):

dlg.PriceCatTBox.Text = "2300.00";
....

然后如上所述:

catPrStr = PriceCatTBox.Text;

4 个答案:

答案 0 :(得分:3)

  

我采用这种方法是对的   字符串十进制转换   算术运算?

我会设置与模型的双向绑定来存储您的小数值。这将允许您直接访问它们而不是解析字符串。这也将解决您的错误。

答案 1 :(得分:3)

您确定您的文化(区域设置)设置没有干扰吗?如果catPrStr始终处于编辑问题中显示的不变文化中,则可以使用decimal.TryParse(catPrStr, CultureInfo.InvariantCulture);强制使用该文化。如果未指定区域性,则在当前系统区域中完成解析,例如,可以使用逗号作为小数分隔符。

答案 2 :(得分:1)

我们无法帮助您,因为我们不知道catPrStr的价值,您正在从String转换为Decimal,并且很可能正在转换的字符串的值是不正确。

答案 3 :(得分:1)

decimal.TryParse(catPrStr, out catPr);并处理它的bool返回,以确保您有合理的价值来处理。