2013-10-21 34 views
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(); 
     } 
    } 

程序完美工作,當我刪除從文本框中的「$」,但是,它需要有在最終產品中。任何幫助,將不勝感激。

+2

另一種方法是使美元對文本框的側面簽署標籤..它的樣式,所以它看起來像它是文本框的一部分。 –

回答

2

使用這個代替:

Discount = decimal.Parse(postDiscountCostTextBox.Text.Replace("$", "")); 
+0

謝謝,那是它。 – KingDave212

+0

真棒,很高興做到了。你能否將我的答案標記爲已接受的答案?謝謝! –

+0

是的,會盡快完成它,但是這個網站讓你在發佈後稍微等一會兒。 – KingDave212

1

如果什麼系統上的當前文化具有比貨幣美元符號以外的符號?

正確的做法是指定的「貨幣」的NumberStyles和使用的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? 
      }