C# 不断获得;对象引用未设置为对象的实例。”;用于picturebox阵列
我一直得到的是“对象引用未设置为对象的实例”。我不想在每个计时器上都创建新对象,我只想更改I-th picturebox的位置。有什么想法吗?C# 不断获得;对象引用未设置为对象的实例。”;用于picturebox阵列,c#,C#,我一直得到的是“对象引用未设置为对象的实例”。我不想在每个计时器上都创建新对象,我只想更改I-th picturebox的位置。有什么想法吗? 空值不是x和y,空值是PictureBox数组。(我尝试添加了Player[I]=new PictureBox();,它成功了。我就是这样知道的)如果你已经有32个PictureBox对象,并且你想更改它们的位置,你需要让每个播放器数组成员引用一个PictureBox public partial class Form1 : Form { pub
空值不是x和y,空值是PictureBox数组。(我尝试添加了
Player[I]=new PictureBox();
,它成功了。我就是这样知道的)如果你已经有32个PictureBox
对象,并且你想更改它们的位置,你需要让每个播放器
数组成员引用一个PictureBox
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int []x=new int[32];int []y=new int[32];
PictureBox[] players=new PictureBox[32];
...
}
private void Form1_Load(object sender, EventArgs e)
{
int i = 0;
foreach (var ctrl in this.Controls)
{
if (ctrl is PictureBox)
{
var myPicturebBox = (PictureBox)ctrl;
players[i] = myPicturebBox;
this.Controls.Add(players[i]);
i++;
}
}
radar.Interval = 100;
radar.Start();
}
现在,数组成员引用了表单中的所有PictureBox
对象
编辑
由于PictureBox对象都是以编程方式创建的,因此在使用它们之前,您必须先对它们进行设置,如下所示:
int i = 0;
foreach (var ctrl in this.Controls)
{
if (ctrl is PictureBox)
{
var myPicturebBox = (PictureBox)ctrl;
players[i] = myPictureBox;
i++;
}
}
现在,您需要将PictureBox添加到表单的控件集合中:
PictureBox myPictureBox = new PictureBox();
然后您可以使用前面的代码,使用循环对所有图片框执行此操作。玩家在雷达勾号中可能重复为null?这两个x[i]和y[i]是什么?您是否创建了两个数组x和y并初始化了它们?我想,我在雷达勾号中所做的一切都显示在代码中。如果为null,我该怎么办@首先,它是空的吗?或per@Lourayad,为x
或y
null。首先要做的是找出什么是空的。这个放进雷达?我试过了,但它总是会创建另一个picturebox,正如我提到的,我不想要新的picturebox,我只想改变它的位置。然后你需要用已经存在的图片盒
对象填充你的玩家
数组。这是否意味着我必须在我的表单上添加32个图片盒?没有更简单的方法吗?HuhNo,不在radar_Tick
,把它放在表单\u Load
或类似的地方。你从设计器中添加了图片框?或者它们是以编程方式创建的?
PictureBox myPictureBox = new PictureBox();
this.Controls.Add(myPictureBox)