处理列表和列表框项

时间:2012-07-28 10:47:26

标签: c# winforms soap sum

嘿,我有一个非常讨厌的问题,我有一个双打和列表框列表。用户可以在文本框中输入值,然后单击EnterValue。

List<double> listDouble = new List<double>();

    private void EnterValue_Click(object sender, EventArgs e)
    {
        //convert input to double
        listDouble.Add(Convert.ToDouble(textBox1.Text));
        textBox1.Clear();
        //clear existing items
        listBox1.Items.Clear();
        // clear any existing list items
        for (int i = 0; i < listDouble.Count; i++)
        {
            listBox1.Items.Add(listDouble[i]);
        }
     }

然后我有另一个用户可以点击的按钮,它将对输入的双打列表求和。

    private void button2_Click(object sender, EventArgs e)
    {
        listBox1.Items.Clear();
        CalculateSumOfList.ServiceReference1.Service1SoapClient client = new CalculateSumOfList.ServiceReference1.Service1SoapClient();
        CalculateSumOfList.ServiceReference1.ArrayOfDouble arrayOfDoubles = new CalculateSumOfList.ServiceReference1.ArrayOfDouble();
        arrayOfDoubles.AddRange(listDouble);
        string result = client.CalculateSum(arrayOfDoubles);
        label1.Text = result;
        //for (int i = 0; i < listDouble.Count; i++)
        //{
        //      listDouble.Remove(i);
        //}
    }

这里的问题是,当用户输入一个值时,它会被添加到列表中,当用户输入另一个数字时,列表显示正常,当用户计算列表的总和时,该值是正确的。但之后,如果用户返回向列表中添加更多数字,那么“旧”列表会附加到末尾吗?

我已经尝试了一切手段在计算完成后处理那个“旧”列表。但没有任何作用。其中哪一个会破坏第二次尝试。

1 个答案:

答案 0 :(得分:1)

使用listDouble.Clear()完全清除列表。

你的循环(在你的代码示例中注释掉)无法正常工作。试想一下:

  • 首先删除第一个元素,使第二个元素成为新的第一个元素。
  • 现在删除 new 第二个元素(以前是第三个元素)。原始的第二个元素永远不会被删除。
  • 这一直持续到一半元素被移除......