C#在ListView中计算单个列并将其显示在标签中

C#在ListView中计算单个列并将其显示在标签中,c#,listview,label,data-conversion,C#,Listview,Label,Data Conversion,我有一个可以成功导出和导入的ListView。我的问题是,我需要计算付款列(ListView中的最后一列)并在标签中显示结果。但是,我得到一个“输入字符串格式不正确”错误 这是我的密码: private void DisplayWeeklyEarnings() { decimal total =0; foreach (ListViewItem item in lvTimeSheet.Items) { total +

我有一个可以成功导出和导入的ListView。我的问题是,我需要计算付款列(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);
然而,这给了我一个关于使用子项作为方法的错误。显然这是错误的

这是我的脸:

以下是填写了“付款”列的表格:


任何帮助都将不胜感激。提前感谢。

您的最后一列包含货币符号。如果您使用decimal.Parse的适当重载,则可以解析此内容

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

如果您的最后一列包含一个不能解析的值,也不能用十进制的重载解析(例如,一个空白值),那么考虑使用

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

如果您对输入没有完全控制权,则TryParse更安全,因为它不会在输入格式错误时引发异常。

您的最后一列包含货币符号。如果您使用decimal.Parse的适当重载,则可以解析此内容

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

如果您的最后一列包含一个不能解析的值,也不能用十进制的重载解析(例如,一个空白值),那么考虑使用

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

如果您没有对输入的完全控制权,TryParse会更安全,因为它不会在输入格式错误时引发异常。

第一个非常有效。谢谢你的帮助。第一个很有效。谢谢你的帮助。