c#中的新特性,在图片盒数组中添加了空的图片盒对象

本文关键字:对象 添加 数组 新特性 | 更新日期: 2023-09-27 18:11:23

我刚刚开始使用c#并创造我的第一款游戏,但却遇到了一个问题。我有一个picturebox数组

PictureBox[] obstacles = new PictureBox[20];

我试图在里面声明20个新的随机位置picturebox

    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])都只是空吗?

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方法中添加watchforobj会给我一个空值,为什么呢?

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

是的,我是对的,问题出在资源文件里。我搞砸了一些名称空间,它找不到资源文件,因为它在一个不同的名称空间,但我不确定为什么它没有给出一个错误。然而,在修复了所有的名称空间之后,一切正常。:)

c#中的新特性,在图片盒数组中添加了空的图片盒对象

有三种可能

1) Game_Load()在你访问数组之前没有被调用。设置一个断点,看看它是否会触发。

2)你以某种方式创造了两个称为障碍的变量。它的确切定义在哪里?

3)在你访问它之前,它又被清除了。

最基本的检查是在创建循环中设置一个断点,并检查new在该点是否正常工作。