2013-01-09 70 views
0

我正在使用一些文本框來顯示總計,小計和折扣。我將小數轉換爲字符串以表示它們在文本框中。另外,我想在一開始就有"$"格式化文本框C#並使用它無格式的值

我已經使用這個實現這一點:

tbx_total.Text = total.ToString("$ ##0.##"); 

圖形,這是偉大的工作,但我的大問題是,我需要一個文本框的值來計算其他的。基本上,我在運行時遇到格式錯誤,當我嘗試將該文本框文本轉換爲十進制。很明顯,這是由於ToString("$ ##0.##")格式。有沒有什麼方法可以在沒有格式的情況下獲得價值?

+1

Store中的值,則代表你想要的它的價值和你想去的地方。 –

+0

是的,我知道,但我在運行時創建了文本框,我在列表中添加了每個創建的文本框,然後在需要求和時使用列表,這就是爲什麼我沒有consi這是一個選擇。 – Andres

回答

2

一個簡單的解決方案將是:

tbx_total.Text = total.ToString("$ ##0.##"); 
tbx_total.Tag = total; 

然後用tbx_total.Tag屬性進一步使用。

+0

我很失望,因爲沒有做一個單調乏味的工作就無法得到未格式化的文本。無論如何,我認爲你的解決方案更適合我。感謝您的回答和時間。 – Andres

1

閱讀時可以使用NumberStyles進行分析以獲得所需的效果。有上的NumberStyles若干位運算的,所以我建議研究如何使用它們的更多的靈活性:

double.Parse(total, NumberStyles.Currency); 

此外,我比較喜歡這種格式化的貨幣更多一點,但純粹的風格。

String.Format("{0:C}", total); 

注:解析來回一定會產生一定的開銷,從而根據數據量可能更明智的價值,當你需要的十進制值再次卸載到一個對象和參考。

1

作爲替代方案,你可以做到這一點,只要你讀值:

double value = 0; 
if (!double.TryParse(tbx_total.Text.TrimStart(new char[] { '$', ' ' }), out value)) 
{ 
     //Ooops... not a valid number 
} 

所以在這裏,你的號碼前基本除去添加的「$」和空間,使您解析它作爲一個雙。這樣你可以檢查數字是否輸入正確(假設用戶可以編輯文本框)

0

我想你應該將原始值(十進制)存儲在DataTable或其他一些集合中,並使用這些值來計算你需要什麼。

所以,你可以在你喜歡不如何從字符串轉換回warry任何格式的對象格式十進制值。