【发布时间】:2014-04-23 14:50:27
【问题描述】:
我知道这是一个菜鸟错误,但当我访问已设置的对象时,我真的不知道为什么会出现此错误。
xloc 和 yloc 都是局部变量。
gameBorder.FormInstance.tableLayoutPanel1.GetControlFromPosition(xloc, yloc).BackgroundImage = Properties.Resources.Image;
然而,这是在表单类中设置的:
namespace csharp_build
{
public partial class gameBorder : Form
{
public static gameBorder FormInstance;
public gameBorder()
{
FormInstance = this;
InitializeComponent();
}
}
}
知道为什么会这样吗?会不会是因为表单类被引用为gameBorder,这就是构造函数的调用,而解决方案资源管理器中表单类的名称是Form1.cs?
我知道这是一个菜鸟问题,我道歉,但任何帮助将不胜感激。
【问题讨论】:
-
xloc和yloc设置在哪里? -
我敢打赌
GetControlFromPosition将返回 null。尝试将其拆分为:var temp = gameBorder.FormInstance.tableLayoutPanel1.GetControlFromPosition(xloc, yloc)并检查temp的值 -
如果在请求的坐标处没有控制会发生什么?它返回 NULL,您尝试读取 NULL 的 BackgroundImage。 What is a NullReferenceException?
-
将间接链接在一起隐藏了空值。调试中的第 1 步是检查每个步骤:
FormInstance是否为空?是tableLayoutPanel?GetControlFromPosition()会返回任何东西吗?Properties.Resource.Image是非空的吗?使用 IDE 的调试工具。
标签: c# .net winforms nullreferenceexception