[我正在通过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();
}
}
}
}
这是我到目前为止所了解的。引用大家的评论您要我做的是将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
只会Stop
与Timer
不相交。