输入十进制时,十进制TryParse失败

时间:2013-03-17 18:48:32

标签: c# .net parsing

我还有一个关于我创建的TryParse方法的问题,以检查我的用户输入。对不起,我的额外问题,但我遇到了另一个复杂问题,并希望得到更多的帮助,所以我提出了另一个问题,因为我的上一个很老了。如果我把它贴在最后一个上,我担心没有人会看到这个问题。

没有错误,但是当我尝试运行它来测试我的用户的输入时,对于我输入的所有内容,包括整数,小数,(1.00,1.0,1,000.0),无论如何它都给了我Messagebox.Show。这就是我创造的:

    {
        // Arrange the variables to the correct TextBox.
        decimal Medical;

        if (!decimal.TryParse(ChargeLabel.Text, out Medical))
        {
            MessageBox.Show("Please enter a decimal number.");
        }
        decimal Surgical;
        if (!decimal.TryParse(ChargeLabel.Text, out Surgical))
        {
            MessageBox.Show("Please enter a decimal number.");
        }
        decimal Lab;
        if (!decimal.TryParse(ChargeLabel.Text, out Lab))
        {
            MessageBox.Show("Please enter a decimal number.");
        }
        decimal Rehab;
        if (!decimal.TryParse(ChargeLabel.Text, out Rehab))
        {
            MessageBox.Show("Please enter a decimal number.");
        }

        // Find the cost of Miscs by adding the Misc Costs together.
        decimal MiscCharges = Medical + Surgical + Lab + Rehab;
        ChargeLabel.Text = MiscCharges.ToString("c");

换句话说,我尝试在Medical,Surgical,Lab和Rehab文本框中输入任何形式的数字,它仍然给我相同的MessageBox。有人会向我提供有关如何让我的应用程序正确检查用户输入的帮助吗?谢谢你,再次抱歉。

2 个答案:

答案 0 :(得分:1)

您在每个解析语句中使用相同的标签。

decimal.TryParse(ChargeLabel.Text, out Medical)
decimal.TryParse(ChargeLabel.Text, out Surgical)
decimal.TryParse(ChargeLabel.Text, out Lab)
decimal.TryParse(ChargeLabel.Text, out Rehab)

编辑我建议在每个MessageBox.Show行中放置一个断点,然后查看您正在解析的字符串值是什么。

您还可以在显示的消息中提供更多信息:

decimal Rehab;
if (!decimal.TryParse(ChargeLabel.Text, out Rehab))
{
    MessageBox.Show(string.Format("Unable to parse '{0}' as a decimal number.", ChargeLabel.Text));
}

答案 1 :(得分:1)

确保以正确的文化格式输入数字。有些文化使用昏迷作为分隔符,其他文化使用点。试试" 123,4"和" 123.4"