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
是的,我是对的,问题出在资源文件里。我搞砸了一些名称空间,它找不到资源文件,因为它在一个不同的名称空间,但我不确定为什么它没有给出一个错误。然而,在修复了所有的名称空间之后,一切正常。:)有三种可能
1) Game_Load()在你访问数组之前没有被调用。设置一个断点,看看它是否会触发。
2)你以某种方式创造了两个称为障碍的变量。它的确切定义在哪里?
3)在你访问它之前,它又被清除了。
最基本的检查是在创建循环中设置一个断点,并检查new在该点是否正常工作。