2013-03-13 25 views
4

我的表單具有包含數量的數字的文本框。然後在textchanged事件中,將該數字放置在具有貨幣值(例如:$ 4.00)的標籤的文本屬性中。在我的按鈕單擊事件中,我試圖添加標籤中的所有值。如果使用下面的代碼失敗的TryParse每次TryParse失敗,參數的貨幣字符串類型爲

int num1; 
string text = lbl85x11bwsub.Text; 
if (int.TryParse(text, out num1)) 
{ 
    MessageBox.Show(num1.ToString()); //testing 
} 
else 
{ 
     MessageBox.Show("it failed"); 
} 

,但如果我使用文本框的文本屬性嘗試同樣的事情,它的工作原理。

int num2; 
if (int.TryParse(txt85x11bw.Text, out num2)) 
{ 
    MessageBox.Show(num2.ToString()); 
} 
else 
{ 
     MessageBox.Show("it failed"); 
} 
+0

抱歉,但你確定'lbl85x11bwsub.Text'包含有效的整數(串)? – Sachin 2013-03-13 19:33:28

+5

在第二個代碼中,您從txt獲取字符串,而不是lbl。 – LarsTech 2013-03-13 19:33:32

+0

你剛纔說標籤包含「$」字符..不能轉換爲int。 – scartag 2013-03-13 19:34:10

回答

5

嘗試

Decimal.TryParse(text, 
    NumberStyles.AllowCurrencySymbol, 
    CultureInfo.CurrentCulture, 
    out result); 

代替。 你試圖解析數爲:

  • 不是整數
  • 包含一個貨幣符號
+0

仍然返回0。 – KFP 2013-03-13 19:45:47

+0

當您從字符串中排除貨幣符號時會發生什麼?您確定字符串中存在的貨幣符號是否是文化設置中定義的實際貨幣符號? ...(調試101) – 2013-03-13 20:19:08

8

@Frederik Gheysels給你只是一個小東西你的問題幾乎完整的答案。在這種情況下,您應該使用NumberStyles.Currency,因爲您的號碼不僅可以不是整數,還可以包含千位和小數點分隔符。雖然NumberStyles.AllowCurrencySymbol只會關注貨幣符號。另一方面NumberStyles.Currency is a composite number style.它可以允許幾乎所有其他分隔符。

所以,這個表情,或許,將作品:

Decimal.TryParse(text, 
    NumberStyles.Currency, 
    CultureInfo.CurrentCulture, 
    out result);