-1

どのボタンが押されたかに応じて(「計算」ボタンを押したとき)、下部に合計が表示されるようにしようとしています。ボタン 1 を押すと 30 ポイント、ボタン 2 を押すと 60 ポイント、ボタン 3 を押すと 90 ポイントが表示されます。しかし、それらのいずれかまたはすべてを押すことができるので、1 と 3 を押すと 120 が表示されます。

変数の値を繰り越す方法があることは知っていますが、それを考えたり見つけたりすることはできません (私はこれが初めてです)。また、「if」ステートメントがこれを処理するための最良の方法であるかどうかもわかりません (特に、25 個ほどのボタンを使用することになった場合)。より良い方法があれば、お知らせください。

(ボタンを押すとライムグリーンになるようにしています。)

int score1 = 0;

        if (button1.BackColor == Color.Lime)
        {
            label10.Text = (30 + score1).ToString();
        }
        else label10.Text = score1.ToString();

        if (button2.BackColor == Color.Lime)
        {
            label10.Text = (60 + score1).ToString();
        }
        else label10.Text = score1.ToString();

        if (button3.BackColor == Color.Lime)
        {
            label10.Text = (90 + score1).ToString();
        }
        else label10.Text = score1.ToString();

ありがとうございました。

4

1 に答える 1

0

現在の合計を保持するには、クラスにフォーム変数を追加するだけでよいと思います。

private int totalScore = 0;

背景色を設定してスコアに追加するメソッドを使用できます。

private void SetBackgroundAndAddToTotal(Button button, int score)
{
    if (button.BackColor != Color.Lime)
    {
        button.BackColor = Color.Lime;
        this.totalScore = this.totalScore + score;
    }
}

Click合計に影響を与える必要がある各ボタンのハンドラー内で、を呼び出すことができますSetBackgroundAndAddToTotal()

private void button1_Click(object sender, EventArgs e)
{
    SetBackgroundAndAddToTotal(button1, 30);
}

private void button2_Click(object sender, EventArgs e)
{
    SetBackgroundAndAddToTotal(button2, 60);
}

// etc.

次に、「計算」ボタンのクリック ハンドラーで、フォーム変数から既に計算された合計を取得して表示できます。

private void btnCalculate_Click(object sender, EventArgs e)
{
    label10.Text = this.totalScore.ToString();
}

それはうまくいくでしょうか?

于 2013-08-02T21:26:40.753 に答える