0

我刚刚开始编程,这意味着我是新手……我使用 else if 语句制作了一个井字游戏。

下面的代码将在我的游戏中重置某些值,我确定有但我找不到答案 - 如何缩短此代码块?

        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);
} 

上面的代码将在列表中的所有按钮上运行,并为每个按钮清除文本并设置背景颜色。

于 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 回答