0

プログラミングを始めたばかりです。つまり、私は新しいです...elseifステートメントを使用して三目並べゲームを作成しました。

以下のコードは、ゲーム内の特定の値をリセットするコードです。確かにありますが、答えが見つかりません-このコードブロックを短縮するにはどうすればよいですか?

        btn1.Enabled = true;
        btn2.Enabled = true;
        btn3.Enabled = true;
        btn4.Enabled = true;
        btn5.Enabled = true;
        btn6.Enabled = true;
        btn7.Enabled = true;
        btn8.Enabled = true;
        btn9.Enabled = true;

        btn1.Text = "";
        btn2.Text = "";
        btn3.Text = "";
        btn4.Text = "";
        btn5.Text = "";
        btn6.Text = "";
        btn7.Text = "";
        btn8.Text = "";
        btn9.Text = "";

        btn1.BackColor = default(Color);
        btn2.BackColor = default(Color);
        btn3.BackColor = default(Color);
        btn4.BackColor = default(Color);
        btn5.BackColor = default(Color);
        btn6.BackColor = default(Color);
        btn7.BackColor = default(Color);
        btn8.BackColor = default(Color);
        btn9.BackColor = default(Color);
4

3 に答える 3

3

配列、またはさらに良いことに、すべてのボタンを保持する汎用リストを使用する必要があります。

例えば:

 List<Button> buttonList = new List<Button>();

 // Add buttons to list...
 buttonList.Add(btn1);
 buttonList.Add(btn2);
 ...

次に、次のようにリストを反復処理できます。

foreach (Button btn in buttonList)
{
     btn.Text = "";
     btn.BackColor = default(Color);
} 

上記のコードはリスト内のすべてのボタンで実行され、各ボタンのテキストをクリアしてBackColorを設定します。

于 2013-01-19T18:25:16.287 に答える
1

これは、btn1ではなく配列を使用して実行する必要があります。btn[]を使用すると、forループを使用して配列にアクセスできます。

for (i=0; i<9; i++) {
btn[i].Enabled = true;
btn[i].Text = "";
btn[i].Color = default(Color);
}

これらの5行のコードには、上記のすべてのコードが含まれています。

于 2013-01-19T18:27:44.420 に答える
0

コントロールですべてのボタンをリセット

foreach(var item in this.Controls)
{
    if (item is Button)
    {
        item.Enabled = true;
        item.Text = "";
        item.BackColor = default(Color);
    }
}
于 2013-01-19T18:48:37.957 に答える