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

システム上の現在のカルチャに、通貨を表すドル記号以外の記号がある場合はどうなるでしょうか?

正しいアプローチは、「Currency」NumberStyles を指定し、Parse() の代わりに TryParse() を使用することです。

            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 に答える