NullReferenceException was unhandled, Object Reference not set to an instance of an object
每当运行程序时,我都会得到:nullreferenceexception未处理,对象引用未设置为对象的实例。
当我启动程序时,会出现一个名为max score的表单,用户在其中输入最大分数并按OK。在OK事件中,我从MainForm调用一个方法来更新MainForm上的MaxGameCountLabel,并将输入的最大分数作为参数。
当我按"确定"时,我在处得到NullReferenceException。
1 | myGameCountLbl.Text = maxGames.ToString(); |
我的MaxGameCountlBlupDate方法。
以下是MAinForm中的MaxGameCountlBlupDate方法代码:
1 2 3 4 5 6 7 | //Update game count label public void maxGameCountLblUpdate(decimal maxGames) { maxGames = decimal.ToInt32(maxGames); myGameCountLbl.Text = maxGames.ToString(); compGameCountLbl.Text = maxGames.ToString(); } |
这是我在MaxScore上的OK按钮事件:
1 2 3 4 | private void okBtn_Click(object sender, EventArgs e) { MainForm.maxGameCountLblUpdate(max); } |
注意,我已经准备好了
1 | public Form1 MainForm { get; set; } |
在Max评分中
我在主窗体中创建了MaxScore:
1 2 3 4 5 |
我做不到……我试过很多东西……谢谢!
编辑:在myGameCountLbl.Text=MaxGames.ToString()添加断点后;MyGameCountlbl显示为空…很抱歉我是个新手…我该怎么解决这个问题?实际上,MaxGames的计算结果是1,所以这不是问题所在。
如果这是导致问题的原因:
1 | myGameCountLbl.Text = maxGames.ToString(); |
那么要么
当您对此进行调试并在适当的行上放置断点时会发生什么?这对
您是否从构造函数中删除了:
如果使用设计器生成窗体UI,Visual Studio将在后台(class.designer.cs)生成一个方法来初始化控件。如果在访问UI元素之前不调用
您还可以让Visual Studio在所有异常上中断,或者在所有NullReferenceExceptions上中断,然后您可以检查发生了什么。
(调试->异常->公共语言运行时异常…)
我知道这是很久以前发布的,但我遇到了同样的问题,这就是我解决它的方法。
如果您查看提供的故障排除提示,第二个提示建议:
Check to determine if the object is null before calling the method.
这实际上就是解决方案。使用if语句检查要分配的值是否不为空,如下所示:
1 2 3 | if (maxGames!=null){ myGameCountLbl.Text = maxGames.ToString(); } |
这样可以确保避免将空值赋给mygamecounlbl
希望能帮上忙
为什么不在该行中放置一个断点并调试两个对象的当前状态?麦克斯从哪里来?
mainform.maxgamecountlblupdate(最大);