0

ねえ、私は本当に厄介な問題を抱えています。私はダブルスのリストとリストボックスを持っています。ユーザーはテキストボックスに値を入力して、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);
        //}
    }

ここでの問題は、ユーザーが値を入力するとその値が正常なリストに追加され、次にユーザーが別の数値を入力するとリストが正常に表示され、ユーザーがリストの合計を計算すると値が正しいことです。しかし、その後、ユーザーが戻ってリストに番号を追加すると、「古い」リストが最後に追加されますか?

私は計算が行われた後、その「古い」リストを処分するためにあらゆる手段を試みました。しかし、何も機能しません。もちろん、どちらが2回目の試みを台無しにします。

4

1 に答える 1

1

listDouble.Clear()リストを完全にクリアするために使用します。

ループ(コード例でコメント化されています)が正しく機能していません。よく考えてみてください。

  • まず、最初の要素を削除して、2番目の要素を新しい最初の要素にします。
  • ここで、新しい2番目の要素を削除します(以前は3番目の要素でした)。元の2番目の要素が削除されることはありません。
  • これは、要素の半分が削除されるまで続きます...
于 2012-07-28T10:51:55.147 に答える