从标记中的对象获取属性

时间:2016-03-08 13:45:44

标签: c# .net chess

对于学校作业,我们在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?)

抱歉如果这是一个愚蠢的问题,但我对编程很新。 谢谢!

1 个答案:

答案 0 :(得分:6)

你必须强制转换它,因为Tag是一个对象类型:

Tower tower = Vak[i,x].Tag as Tower;

if(tower!=null)
{
   //do stuff
}

但是,我会避免在像这样的Tag属性中存储数据结构。