C#处理似乎不正确

问题描述 投票:-1回答:1

[我正在通过WinForms制作游戏,其中当PictureBox1与另一个PictureBox2碰撞时,它应该dispose PictureBox1。但是似乎它甚至都没有摆脱PictureBox1,因为即使PictureBox1被释放,它仍然可以与PictureBox1相交。我会说这与将visible设置为false

是相同的

这里是代码:

public void MissileCollision()
    {
        foreach (var EnemyTank in EnemyTankArray)
        {
            foreach(var Missile in missilesArray)
            {
                if (EnemyTank.Bounds.IntersectsWith(Missile.Bounds))
                {
                    EnemyTank.Location = new Point(rand.Next(0, 150));
                    Missile.Dispose();
                }
            }
        }
    }
c# picturebox intersection dispose
1个回答
0
投票

这是我到目前为止所了解的。引用大家的评论您要我做的是将List<T>复制到新的数组。然后,由于var不再用于制作新的数组,因此将其更改为PictureBox,因为这是我要处理的数组。

这是现在的代码。

public void MissileCollision()
    {
        foreach (var EnemyTank in EnemyTankArray)
        {
            foreach(PictureBox Missile in missilesArray.ToArray())
            {
                if (EnemyTank.Bounds.IntersectsWith(Missile.Bounds))
                {
                    EnemyTank.Location = new Point(rand.Next(0, 150));
                    missilesArray.Remove(Missile);
                    Missile.Dispose();
                }
            }
        }
    }

那样,即使有导弹,我也可以Dispose导弹。如果我没有Dispose导弹。 missileArray只会StopTimer不相交。

© www.soinside.com 2019 - 2024. All rights reserved.