请帮我找出我的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;

最佳答案

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

10-07 13:15