显示所有列表框项目的总值

本文关键字:项目 列表 显示 | 更新日期: 2023-09-27 18:02:16

我想在文本框中显示所有列表框项目的总值。

调试器已经显示这些值的格式如下:£00.00'r'n

从本质上讲,我想分解项目字符串,然后将其转换为双精度(或十进制(,将每个项目加在一起,最终得出总和。

我曾尝试使用.Replace来代替£ 'r'n,但这似乎只适用于第一个值,而不适用于其他值

对于如何解决这个问题的任何帮助或建议,我们将不胜感激。

(使用Visual Studio 2012,使用C#的WPF(

编辑--提供的代码列表:

private string trimmed;
private int total;
/// <summary>
/// Calculate the total price of all products
/// </summary>
public void calculateTotal()
{
    foreach (object str in listboxProductsPrice.Items)
    {
        trimmed = (str as string).Replace("£", string.Empty);
        trimmed = trimmed.Replace("'r'n", string.Empty);
        //attempt to break string down
    }
    for (int i = 0; i < listboxProductsPrice.Items.Count - 1; i++)
    {
        total += Convert.ToInt32(trimmed[i]);
    }
    //unsure about this for, is it necessary and should it be after the foreach?
    double add = (double)total;
    txtbxTotalPrice.Text = string.Format("{0:C}", add.ToString());
    //attempt to format string in the textbox to display in a currency format
}

当我尝试这个代码时,£1.00£40.00的结果等于48。不太清楚为什么,但希望它能帮助那些比我更有经验的人。

显示所有列表框项目的总值

首先,您在每次迭代中完全替换trimmed的内容。我会把循环改为:

foreach (object str in listboxProductsPrice.Items)
{
    trimmed = (str as string).Replace("£", string.Empty);
    trimmed = trimmed.Replace("'r'n", string.Empty);
    total += Convert.ToInt32(trimmed);
}

当你做这个

total += Convert.ToInt32(trimmed[i]);

由于trimmed是一个字符串,因此您正在添加该字符串的第i个字符的值——如果列表框中的行数超过trimmed中的字符数,则可能会导致程序崩溃。您可能得到48,因为这是字符"0"的整数值。