对于一个学校任务,我们使用C#制作国际象棋游戏,其中我们必须学会以面向对象的方式工作。该板在嵌套开出了2D图片框阵列的for循环从标签中的对象获取属性
//Create the Board Pattern out of PictureBoxes
#region Checkerboard
PictureBox[,] Vak = new PictureBox[8, 8];
for (int i = 0; i < 8; i++)
{
for (int x = 0; x < 8; x++)
{
Vak[i, x] = new PictureBox();
Vak[i, x].Name = String.Format("{0},{1}", i, x);
Vak[i, x].Width = 50;
Vak[i, x].Height = 50;
Vak[i, x].Location = new Point(xpos, ypos);
Vak[i, x].SizeMode = PictureBoxSizeMode.Zoom;
Vak[i, x].Click += Chess_Click;
if ((i + x) % 2 == 0)
{
Vak[i, x].BackColor = ColorTranslator.FromHtml("#e5e5e5"); //white ColorTranslator.FromHtml("#e5e5e5");
}
else
{
Vak[i, x].BackColor = ColorTranslator.FromHtml("#545454"); //black ColorTranslator.FromHtml("#545454");
}
xpos += 50;
this.Controls.Add(Vak[i, x]);
}
xpos = 50;
ypos += 50;
this.Controls.Add(border);
}
#endregion
在其他职位我发现我可以指一类(通过PictureBox的)使用.TAG属性像这样:
Vak[i,x].Tag = new Tower();
但是,我不能想出一个办法,从withing标签
说出塔类有一个“名称”属性调用从塔类的属性,我怎么会去调用该
string objectname = Vak[i,x].Tag.(name?)
对不起,如果这是一个愚蠢的问题,但我对编程非常陌生。 谢谢!
如果您知道在“标签”属性中存储的对象的类型,则需要将其明确转换为该类型以访问其属性。像'((Tower)(Vak [i,x]))。Name'。 – dotNET
我建议不要使用'Tag'属性,而是用picturebox和chesspiece成员创建自己的结构。 – wimh
@Wimmel我该怎么做呢? –