更优雅的方式添加按钮到数组

本文关键字:按钮 数组 添加 方式 | 更新日期: 2023-09-27 18:04:38

我正在用Button Array制作一个小的井字游戏,我正在创建数组,我想知道是否有一种更优雅的方式来分配数组。我现在的代码是:

MovementPiece[0, 0] = button1;
MovementPiece[0, 1] = button2;
MovementPiece[0, 2] = button3;
MovementPiece[1, 0] = button4;
MovementPiece[1, 1] = button5;
MovementPiece[1, 2] = button6;
MovementPiece[2, 0] = button7;
MovementPiece[2, 1] = button8;
MovementPiece[2, 2] = button9; 

我现在的问题是我的程序无法看到按钮,因为它们是在本地声明的。

    public void Form1_Load(object sender, EventArgs e)
    {
        Button[,] MovementPiece = { { button1, button2, button3 }, 
                                  { button4, button5, button6 },
                                  { button7, button8, button9 } };
        //Initiates the button array.
        for (int Row = 0; Row <= 2; Row++)
        {
            for (int Column = 0; Column <= 2; Column++)
            {
                this.Controls.Add(MovementPiece[Row, Column]);
                //Sets the handler for the buttons.
                MovementPiece[Row, Column].Click += new EventHandler(MovementPiece_Click);
            }
        }
 Public void Clear()
 {
 //Can not see buttons.
 }

谢谢你,我是一个开始,所以放轻松:|

更优雅的方式添加按钮到数组

当然你可以这样使用数组初始化式:

Button[,] MovementPiece = { { button1, button2, button3 }, 
                              { button4, button5, button6 },
                              { button7, button8, button9 }
                            };

进一步阅读

    <
  • 阵列教程/gh>c#规范12.6数组初始化式

正如我在我的评论中所说的,你需要在类级别声明你的数组,并在你的Form_Load事件处理程序中初始化它,这样它将对你的整个表单可见。这样应该可以工作。

public partial class Form1 : Form
{
    Button[,] MovementPiece;  //Declare at the class level
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        MovementPiece = new Button[,]{ { button1, button2, button3 }, 
                          { button4, button5, button6 },
                          { button7, button8, button9 }
                        }; //Initialized in your Form Load event
        // Do your button initialization here
    }
}

不要使用这样的数组,而是将所有按钮移动到一个面板中。(这是一个控件)然后你可以在面板的"控件"列表中循环。

foreach(Button button IN mypanel.Controls){
    //do stuff
}

更容易使用