请帮我找出我的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);
强制使用该区域性。如果未指定区域性,则在当前系统区域性中进行解析,例如,可以使用逗号作为小数点分隔符。