对于学校作业,我们在C#中制作国际象棋游戏,我们必须学会以面向对象的方式工作。该板由嵌套for循环中的2D图片盒阵列构成
//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
在其他帖子上我发现我可以使用.Tag属性引用一个类(通过图片框),如下所示:
Vak[i,x].Tag = new Tower();
但是,我无法找到一种方法来使用标记
从Tower类中调用属性假设Tower类有一个属性“name”,我将如何调用
string objectname = Vak[i,x].Tag.(name?)
抱歉如果这是一个愚蠢的问题,但我对编程很新。 谢谢!
答案 0 :(得分:6)
你必须强制转换它,因为Tag是一个对象类型:
Tower tower = Vak[i,x].Tag as Tower;
if(tower!=null)
{
//do stuff
}
但是,我会避免在像这样的Tag属性中存储数据结构。