0

基本的に、以下の最初のforステートメントは、ユーザー入力に応じてtestvalueラベルのリストを作成します。

2番目のforステートメントは、作成された動的ラベルの合計を計算することになっていますが、再生すると、「入力文字列が正しい形式ではありませんでした」というエラーが表示されます。tots += double.Parse(value[p].ToString());任意の助けに関連し ていただければ幸いです。ありがとう

ArrayList value = new ArrayList();

int p =0;

for (int i = 0; i < weight.Count; i++)
{
    Label test = new Label();
    System.Drawing.Point l8 = new System.Drawing.Point(440, 48 + s);
    test.Location = l8;
    value.Add(test);

    k += 35;

    Label l2 = testpercent1[i] as Label;
    Double.TryParse(l2.Text.Trim(), out label2);
    Label l = testpercent2[i] as Label;
    Double.TryParse(l.Text.Trim(), out label1);
    Double testvalue = Math.Round(((label1 * .3) + (label2 * .4)));
    test.Text = testvalue.ToString();
}

Double total = 0;
for (int p = 0; p < value.Count; p++)
{
    tots += double.Parse(value[p].ToString());
}
4

5 に答える 5

3
tots += double.Parse(((Label)value[p]).Text);
于 2012-05-01T17:04:22.893 に答える
1

value[p]のタイプはLabelです。ラベルのテキスト値を取得する場合は、value[p].Textを使用する必要があります。

Double total = 0;
for (int p = 0; p < value.Count; p++)
{
   tots += double.Parse(((Label)value[p]).Text);
}

もう1つList<Label>、値の代わりにを使用する必要がありArrayListます。

于 2012-05-01T17:05:36.637 に答える
1

ToString()ラベルのを解析しようとしています。代わりに、ラベルのいくつかのプロパティを解析しようとしていましたか?

を呼び出すとvalue[p]、返されるものはタイプのonオブジェクトですLabel。ラベルのテキストを解析したい場合は、代わりにコードは次のようになります。

tots += double.Parse(((Label)value[p]).Text);

于 2012-05-01T17:05:39.117 に答える
1

ArrayListにコントロールを追加していることは明らかです。したがって、これは機能しません。

tots += double.Parse(value[p].ToString());

次のことをお勧めします。

value.Add(test.Text);

それで:

tots += double.Parse(value[p]);

PS:List<string>の代わりに 使用してくださいArrayList

于 2012-05-01T17:05:56.163 に答える
1

データをラベルに保存することは非常に悪い考えです。配列やdoubleのリストなど、この目的により適したデータ構造を使用してください。ラベルはデータの表示にのみ使用してください。

double[] values = new double[N];
Label[] lables = new Label[N]; // Only for display!

//  Calculate (just as an example)
double result = values[i] + values[k];

// NOT LIKE THIS!
double result = Double.Parse(labels[i]) + Double.Parse(labels[k]);
于 2012-05-01T17:08:03.727 に答える