提问人:Velarux 提问时间:11/10/2018 最后编辑:Velarux 更新时间:11/11/2018 访问量:131
对象引用未设置为对象的实例,通过代码生成 win forms 控件 [duplicate]
Object reference not set to an instance of an object, generating win forms control via code [duplicate]
问:
我正在为我的班级制作一个简单的太空入侵者类型的游戏,我试图通过我的代码生成所有内容。我有 3 种方法导致我出现问题
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
GenerateBullet();
}
private void GenerateBullet()
{
playerBullet = new PictureBox()
{
Parent = backBoard,
Size = new Size(4, 12),
Visible = true,
Enabled = true,
Image = Properties.Resources.Untitled,
SizeMode = PictureBoxSizeMode.StretchImage
};
}
private void BulletMovement(object sender, EventArgs e)
{
if (playerBullet.Enabled == true)
{
playerBullet.Top += 4;
}
}
检查启用并基于此移动的第三种方法是抛出错误“对象引用未设置为对象的实例”。有没有办法在不通过工具箱/表单设计实际生成图片的情况下解决这个问题。
BulletMovement是由计时器滴答声调用的,对不起,我没有说清楚
答:
0赞
DRapp
11/10/2018
#1
在执行任何操作之前,您可能应该预先测试 null。
// don't do anything if a null player bullet object
if( playerBullet == null )
return;
至于使用 sender 和 e 参数,您没有在这些参数上公开足够的代码来显示触发它们的事件处理程序......也许编辑您现有的问题并发布更多详细信息。
评论
0赞
Velarux
11/11/2018
这并不能真正解决任何问题,因为据我所知,创建永远不会生成可调用的对象
上一个:如何通过变量引用修改控件属性
下一个:空对象检测
评论