新增C#,图片框数组中的null picturebox对象?

时间:2011-10-17 14:47:10

标签: c# arrays object null picturebox

我刚刚开始使用C#,创建了我的第一个游戏,但遇到了问题。 我有一个picturebox数组

PictureBox[] obstacles = new PictureBox[20];

我正在尝试在其中声明20个新的随机位置图片框。

    private void Game_Load(object sender, EventArgs e)
    {
        player.Size = new Size(20, 20);
        player.Location = new Point(20, 240);
        player.Image = Properties.Resources.playerImg;
        Controls.Add(player);

        for (int i = 0; i < 20; i++)
        {
            obstacles[i] = new PictureBox();
            obstacles[i].Size = new Size(10, 10);
            obstacles[i].Location = new Point(50, 340);
            obstacles[i].BackColor = Color.Red;
            Controls.Add(obstacles[i]);
        }
    }

我知道它并没有将它们产生到一个随机的位置,但我不会这样做,直到我让它们产卵。 现在当我尝试创建一个使用picturebox数组的方法时,它的对象(picturebox [0-19])都只是null?

private void JustAnOtherTest(PictureBox obj)
{
    for (int y = obj.Top; y < obj.Top + obj.Height - 1; y++)
    {
        MessageBox.Show("Testing out!", "Test");
    }
}

现在打电话:JustAnOtherTest(障碍[1]);并在JustAnOtherTest方法中为obj添加一个监视器只会给我一个null,为什么会这样?

编辑:似乎它永远不会进入for循环,因为它一旦进入player.Image = Properties.Resources.playerImg就会退出Game_Load。这可能意味着问题出在资源文件......:S

EDIT2:是的,我是对的,问题出在资源文件中。我搞砸了一些命名空间,它找不到资源文件,因为它在不同的命名空间中,但我不太确定为什么它没有给出错误。然而,在修复所有命名空间之后,工作得很好。 :)

1 个答案:

答案 0 :(得分:0)

有三种可能性

1)在访问数组之前未调用Game_Load()。在其中粘贴一个断点,看它是否会发射。

2)你以某种方式创造了两个叫做障碍的变量。它到底在哪里定义?

3)在您访问之前,有些东西会再次清除。

最基本的检查是在你的创建循环中放置一个断点,并在那时检查新的是否正常。