每当我运行程序时,我得到:NullReferenceException未处理,Object Reference未设置为对象的实例。
当我启动程序时,我会看到一个名为MaxScore的表单,用户输入最高分并按OK。在OK事件中,我调用MainForm中的方法来更新MainForm上的maxGameCountLabel,并将最大分数输入的值作为参数。
当我按下ok时,我在
处得到NullReferenceExceptionmyGameCountLbl.Text = maxGames.ToString();
以下是位于MainForm中的maxGameCountLblUpdate方法代码:
//Update game count label
public void maxGameCountLblUpdate(decimal maxGames)
{
maxGames = decimal.ToInt32(maxGames);
myGameCountLbl.Text = maxGames.ToString();
compGameCountLbl.Text = maxGames.ToString();
}
这是我在MaxScore上的OK Button事件:
private void okBtn_Click(object sender, EventArgs e)
{
MainForm.maxGameCountLblUpdate(max);
}
注意,我已经设置了
public Form1 MainForm { get; set; }
MaxScore中的
我在MainForm中创建了MaxScore:
using (MaxScore scoreForm = new MaxScore())
{
scoreForm.MainForm = this;
scoreForm.ShowDialog();
}
我无法让这个工作..我尝试了很多东西.. 谢谢!
编辑:在myGameCountLbl.Text = maxGames.ToString()添加断点后; myGameCountLbl似乎是空的...我很抱歉成为一个新手...我该如何解决这个问题?事实上,maxGames确实是1,所以这不是问题
答案 0 :(得分:4)
如果这是造成问题的那条线:
myGameCountLbl.Text = maxGames.ToString();
然后myGameCountLbl
为空,或maxGames
为。鉴于maxGames
是小数,表明myGameCountLbl
为空。
调试到此并在相应的行上放置断点时会发生什么?这对myGameCountLbl
显示了什么?
答案 1 :(得分:2)
您是否从构造函数中删除了InitializeComponent();
?
如果您使用设计器来构建表单UI,Visual Studio将在后台构建一个方法(Class.designer.cs)来初始化控件。如果在访问UI元素之前没有调用InitializeComponent()
,则会出现NullReferenceException。
答案 2 :(得分:1)
您还可以让Visual Studio中断所有异常,或者中断所有NullReferenceExceptions,然后您可以检查发生了什么。
(调试 - >例外 - >公共语言运行时例外...)
答案 3 :(得分:0)
为什么不在该行中设置断点并调试两个对象的当前状态?来自这里的最大值在哪里?
MainForm.maxGameCountLblUpdate(最大);
答案 4 :(得分:0)
我知道这是很久以前发布的,但我遇到了同样的问题,这就是我解决它的方法。
如果你查看提供的故障排除提示,第二个提示:
在调用方法之前检查以确定对象是否为空。
这实际上是解决方案。使用IF语句检查要分配的值是否为空,如:
if (maxGames!=null){
myGameCountLbl.Text = maxGames.ToString();
}
这将确保您避免将空值分配给myGameCounLbl
我希望有帮助