2017-10-08 73 views
-4

我想總結列表框中的所有數字,數字來自數據庫 日期類型是金錢,並且在每次點擊按鈕時我想顯示總結列表框中的數字。如何總結列表框中的所有數字

代碼我使用:

decimal sum = 0; 

private void but_TotalSale_Click(object sender, EventArgs e) 
     { 

      for (int i = 0; i < lst_Price.Items.Count; i++) 
      { 
       sum += Convert.ToDecimal(lst_Price.Items[i].ToString()); 
      } 

      textBox1.Text = Convert.ToString(sum); 
     } 

而且我得到這個錯誤

型 'System.FormatException' 未處理的異常出現在mscorlib.dll

更多信息:輸入字符串的格式不正確。

該怎麼辦?以及如何解決錯誤。

列表框中enter image description here

+1

那麼,在錯誤之後,輸入字符串是什麼?當拋出錯誤時,'lst_Price.Items [i] .ToString()'的值是多少? (假設這是引發錯誤的那一行...是這樣嗎?) – David

+0

在你的for循環中的一行放置一個斷點並檢查'lst_Price.Items [i]'。 – Filburt

+0

時間是數字全部 –

回答

1

我認爲這個問題是你的列表項轉換爲字符串不使用列表項中的數值。

試試這個:

decimal sum = 0; 
private void but_TotalSale_Click(object sender, EventArgs e) { 
for (int i = 0; i < lst_Price.Items.Count; i++) { 
    sum += Convert.ToDecimal(lst_Price.Items[i].Text); 
    } 
textBox1.Text = Convert.ToString(sum); 
} 
+0

我試過,但沒有工作,我試圖刪除'.text'和'.tostring',但我仍然在錯誤'.tostring'拋出錯誤,並且在代碼中不接受文本'.text' –

0

爲什麼要轉換爲字符串中的首位

lst_Price.Items[i]是一個對象,Convert.ToDecimal()具有過載,可以得到一個object

所以可以做

for (int i = 0; i < listBox1.Items.Count; i++) 
      { 
       sum += Convert.ToDecimal(lst_Price.Items[i]); 
      } 

或LINQ中的一行

sum = lst_Price.Items.OfType<object>().Sum(x => Convert.ToDecimal(x)); 
0

你的代碼是正確的。列表框裏面是否有文字?