2017-05-24 13 views
0

エクスポートとインポートが正常に実行できるListViewがあります。私の問題は、支払い列(ListViewの最後の列)を計算し、その結果をラベルに表示する必要があることです。しかし、私は "入力文字列が正しい形式ではありません"エラーを取得しています。私も試してみましたC#ListViewで単一の列を計算してラベルに表示します

private void DisplayWeeklyEarnings() 
    { 
     decimal total =0; 

     foreach (ListViewItem item in lvTimeSheet.Items) 
     { 
      total += Convert.ToDecimal(item.SubItems[4].Text); 
     } 

     lblEarnings.Text = String.Format("{0:C2}", total); 
    } 

:ここ

は私のコードです

total += Decimal.Parse(item.Subitems[4].Text); 

その他の使用を示唆している:としてサブアイテムを使用することについて私にエラーを与えている、しかし

total += Decimal.Parse(item.Subitems(4).Text); 

方法。だから明らかに間違っています。ここで Click here to see the Form Face

人口有料列を持つフォームです::

は、ここに私のフォームの顔であるすべてのヘルプをいただければ幸いです Click here to see the Populated form

。前もって感謝します。

答えて

3

最後の列に通貨記号が含まれています。あなたはdecimal.Parse

total += decimal.Parse(item.SubItems[4].Text, NumberStyles.Currency); 

の適切なオーバーロードを使用する場合は、あなたの最後の列は、その後decimal.Parseのこのオーバーロードで(ブランク値例えばのように)どちらも解析できない値が含まれている場合、これは、解析することができましたあなたが入力を完全にコントロールを持っていない場合、それは不正な入力の場合には例外を発生しないので、より安全で失敗さ

decimal d;  
if(decimal.TryParse(item.SubItems[4].Text, NumberStyles.Currency, CultureInfo.CurrentCulture, out d)) 
    total += d; 

TryParseを使用することを検討してください。

+0

最初の1つはうまくいった。ご協力ありがとうございました。 – NMeneses

関連する問題