C# 在动态PictureBox中存储和访问变量
我正在尝试制作一个连接四个游戏,其中所有10x10图片框都是动态创建的。这是我用来创建图片框网格的文本:C# 在动态PictureBox中存储和访问变量,c#,C#,我正在尝试制作一个连接四个游戏,其中所有10x10图片框都是动态创建的。这是我用来创建图片框网格的文本: int[,] gameBoard; Player player; enum Player { RED, BLUE } private void Form1_Load(object sender, EventArgs e) { Size cellSize = new Size(pictureBox1.Width / gridSize, pictureBox1.Heig
int[,] gameBoard;
Player player;
enum Player { RED, BLUE }
private void Form1_Load(object sender, EventArgs e)
{
Size cellSize = new Size(pictureBox1.Width / gridSize, pictureBox1.Height / gridSize);
gameBoard = new int[gridSize, gridSize];
player = Player.RED;
for (int i = 0; i < gridSize; i++)
{
for (int j = 0; j < gridSize; j++)
{
PictureBox pb = new PictureBox();
this.Controls.Add(pb);
pb.Left = i * cellSize.Width;
pb.Top = j * cellSize.Height;
pb.BackColor = Color.White;
pb.BorderStyle = BorderStyle.FixedSingle;
pb.Width = cellSize.Width;
pb.Height = cellSize.Height;
pb.Click += new EventHandler(pb_click);
void pb_click(object sender, EventArgs e)
{
if (player == Player.RED)
{
pb.BackColor = Color.Red;
}
else
{
pb.BackColor = Color.Blue;
}
// Change player
if (player == Player.RED)
{
player = Player.BLUE;
}
else
{
player = Player.RED;
}
}
}
}
}
int[,]游戏板;
玩家;
枚举播放器{红色,蓝色}
私有void Form1\u加载(对象发送方、事件参数e)
{
Size cellSize=新尺寸(pictureBox1.Width/gridSize,pictureBox1.Height/gridSize);
gameBoard=newint[gridSize,gridSize];
player=player.RED;
对于(int i=0;i
我的想法是拥有一个10x10的二维阵列,它可以跟踪放置了什么颜色以及放置在哪里。但为了做到这一点,我需要每个图片框存储2个变量。我希望每个图片框都有一个x和y int变量。单击时,它将获得该图片框的x和y值,并使用该值在相同坐标下更改我的二维数组中的值
因此,我的问题是:如何在动态创建的图片框中存储和访问变量?您可以创建一个类来封装数据,并将其放入Tag属性中,以便以后在其他地方使用。或者创建一个自定义子PictureBox,或者一个具有PictureBox和所需属性的自定义控件,以便更好地键入、清理以及更健壮的OOP。我不确定我是否理解……您可以创建一个小类(或结构),如
类MyData{int X;Y chain;}
(但您也可以使用)。因此,您可以这样编写:pb.Tag=newmydata(10,10)
以后这样使用:((MyData)myPictureBox.Tag).X
。或者,您可以从PictureBox继承来扩展它并添加X&Y。或者,在不进行专门化的情况下,您可以创建自定义控件,并使用VS设计器将PictureBox以及代码中所需的属性放置在其中。什么合适?这很有效!!!!!非常感谢你你是个救命恩人:)使用谷歌翻译的c/c出错:classmydata{public int X;public int Y;}