1

割り当て

  1. 整数を 1 つのフィールドに 1 つずつ入力として受け入れる Windows アプリケーションを作成します。
  2. ボタン Process を押すと、入力フィールドのすぐ下にその数値が表示されますが、現在表示されている数値よりも大きい (または最初に処理された数値である) 場合に限ります。zero(0) が処理されるとすぐに、それ以上の入力の受け入れを停止します。
  3. 割り当ての 3 番目の部分: 処理されたすべての数値の合計を (入力フィールドの上に) 表示します。

これが私の課題です。

これまでのところ、割り当ての最初の部分と 3 番目の割り当てが完了しました。第二部の開始方法がわかりません。私がこれまでに持っているのは

 label1.Text = textBox1.Text;
 label2.Text = textBox1.Text;
 label3.Text =(Convert.ToInt32(label1.Text) + Convert.ToInt32(label2.Text)).ToString();

意味がわからない場合は、説明してみましょう

  • 私の最初の質問は、これをより具体的にするにはどうすればよいかということです..テキストボックスに数字を入力して、それをラベル1に送信できるようにしたい..次の数字を入力すると、ラベル2に送られ、ラベル2には送られませんlabel1.. そして label3-9.. まで繰り返します。
  • 2 番目の質問: ラベル 1 (それが大きい場合) によってラベル 2 が表示されないように、番号を制限するにはどうすればよいですか。
  • 最後の質問は、テキスト ボックスに 0 が入力されてラベルとして表示されると、すべての数値の合計が別のラベルに表示されるようにする方法です...

これらの質問を分割できる場合は、これが圧倒的すぎる場合は申し訳ありません...

これが私の割り当てがatmのように見える方法です

private void textBox1_TextChanged(object sender, KeyPressEventArgs e)
{
    textBox1.MaxLength = 1;
    Char digit = e.KeyChar;
    if (!Char.IsDigit(digit) && digit != 8)
        e.Handled = true;
    for (int i = 0; i < Text.Length; i++)
    {
        int c = Text[i];
        if (c < '0' || c > '9')
        {
            Text = Text.Remove(i, 1);
        }
    }
}

private void processBtn1_Click(object sender, EventArgs e)
{
    int current = 0;
    int sum = 0;
    int num = Int32.Parse(textBox1.Text);
    if (num > 0)
    {
        sum += num;
        if (num > current)
        {
            label1.Text = num.ToString();
            current = num;
        }
    }
}

これは私が持っているものです..しかし、プログラムは私が望むようには機能しません..私は何が間違っていますか?

4

1 に答える 1

3

入力した数値をラベルに保存するのはうまくいきません。フォームにあるラベルの数によって制限されるか、ラベルを動的に作成する必要があります。数値を配列またはリストに格納することもできますが、実際には数値を格納する必要はまったくありません。数値の合計を保持し、処理が完了したら各数値を忘れることができます。

現在表示されている数値を変数に格納します。プログラムで負の数を処理する必要がない場合は、ゼロから始めることができます。

int current = 0;

すべての数値を合計する変数も必要です。

int sum = 0;

ボタンのイベント ハンドラーで、テキスト ボックスからのテキストを解析し、ゼロをチェックして合計に追加し、現在表示されている数値と比較します。大きい場合は、ラベルと変数に入れます。

int num = Int32.Parse(textBox1.Text);
if (num > 0)
{
    sum += num;
    if (num > current)
    {
        label1.Text = num.ToString();
        current = num;
    }
}
else
{
    label2.Text = sum.ToString();
    // stop accepting input, perhaps exit?
}
于 2013-02-06T21:55:36.530 に答える