1

我试图在用户关闭我的应用程序后出现一个消息框。这个消息框让用户知道他们购买的东西。我的问题是我的程序在读取文本框中的“$”时崩溃。这是我目前所在的位置:

    private void exitButton_Click(object sender, EventArgs e)
    {
        if
        (MessageBox.Show("Are you sure you want to exit?",
        "Confirm exit...",
        MessageBoxButtons.YesNo,
        MessageBoxIcon.Question,
        MessageBoxDefaultButton.Button2) == DialogResult.Yes)

        {
            decimal Discount;
            Discount = decimal.Parse(postDiscountCostTextBox.Text);

            if (Discount <= 999.99m)
            {
                MessageBox.Show("This amount qualifies for 'A-100' frequent flier miles.",
                    "",
                    MessageBoxButtons.OK);
            }
        }


        {
            this.Close();
        }
    }

当我从文本框中删除“$”时,该程序运行良好,但是,它需要存在于最终产品中。任何帮助,将不胜感激。

4

2 回答 2

2

改用这个:

Discount = decimal.Parse(postDiscountCostTextBox.Text.Replace("$", ""));
于 2013-10-21T02:48:07.787 回答
1

如果系统上的当前文化有一个美元符号以外的符号来表示货币怎么办?

正确的方法是指定“货币”NumberStyles 并使用 TryParse() 而不是 Parse():

            decimal Discount;
            if (decimal.TryParse(postDiscountCostTextBox.Text, System.Globalization.NumberStyles.Currency, null, out Discount))
            {
                if (Discount <= 999.99m)
                {
                    MessageBox.Show("This amount qualifies for 'A-100' frequent flier miles.",
                        "",
                        MessageBoxButtons.OK);
                }
            }
            else
            {
                // ... invalid value in textbox ...
                // Dipslay a MessageBox?
            }
于 2013-10-21T03:31:01.870 回答