【问题标题】:Disposing of list and listbox items处理列表和列表框项目
【发布时间】:2012-07-28 10:47:26
【问题描述】:

嘿,我有一个非常烦人的问题,我有一个双打列表和一个列表框。用户可以在文本框中输入一个值,然后单击 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);
        //}
    }

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

在计算完成后,我已经尝试了各种方法来处理那个“旧”列表。但没有任何效果。这当然会破坏第二次尝试。

【问题讨论】:

    标签: c# winforms soap sum


    【解决方案1】:

    使用listDouble.Clear() 彻底清除列表。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多