C# 转换为小数时出现系统格式错误

C# 转换为小数时出现系统格式错误,c#,.net,C#,.net,错误代码位于:Decimal price=Decimal.Parse(txtprice.Text) 这行代码可以正常工作,但现在由于一些错误,我正在重建程序,这行代码不想工作。有什么想法吗 如果需要,我可以发布全部269行代码和VisualStudio错误代码 如果输入字符串的格式不能解析为十进制,则抛出格式异常 您可以使用Decimal.TryParse(字符串s,小数点后d) decimal d = 0; if(Decimal.TryParse(txtnorthheight.Text, ou

错误代码位于:
Decimal price=Decimal.Parse(txtprice.Text)

这行代码可以正常工作,但现在由于一些错误,我正在重建程序,这行代码不想工作。有什么想法吗

如果需要,我可以发布全部269行代码和VisualStudio错误代码

如果输入字符串的格式不能解析为
十进制
,则抛出
格式异常

您可以使用
Decimal.TryParse(字符串s,小数点后d)

decimal d = 0;
if(Decimal.TryParse(txtnorthheight.Text, out d))
{
    // If the string could be parsed, d contains the value.
    // otherwise TryParse returns false.
}
为了便于管理,您可能希望将函数分解为更小的部分,并首先解析输入。否则,如果整个方法中有多个点由于无效输入而必须退出,那么逻辑就会变得混乱


另一种方法是使用验证来确保只能输入某些类型的值。是一些关于Windows窗体验证的文档。(我不能确定您使用的是表单还是ASP.NET。)

txtprice.Text的值是多少?显然,这不是一个有效的十进制字符串。可能文本前后有空格?有成千上万的关于错误消息的问题,你应该得到。。。如果您需要个性化帮助,请务必仔细阅读指南并发布相应的信息,以显示您的案例与现有案例有何不同。错误消息是什么?这是编译错误还是运行时错误?如果是运行时错误,那么txtprice.Text的值是多少?谢谢,我现在已经解决了这个问题。在没有发表另一篇文章的情况下,我现在遇到了一个问题,我试图在输入上强制一个范围,例如,输入必须在0.9和2.0之间。我无法找到一种方法,在不向用户发送.showmessages的情况下,对输入强制执行此操作。有更简单的方法吗?这是一个Windows窗体应用程序吗?是的,我使用Windows窗体在vs中编写所有内容。我已经多年没有使用过它了,但我想这就是你想要的。它提供了一种方法来验证表单字段,并指示需要同时更正的所有字段,而不是为每个字段显示一系列消息。
decimal d = 0;
if(Decimal.TryParse(txtnorthheight.Text, out d))
{
    // If the string could be parsed, d contains the value.
    // otherwise TryParse returns false.
}