当子窗体关闭时,我想在MdiParent窗体中更改标签的文本。但是我收到此错误“ yourprogram.exe中发生了'System.NullReferenceException'类型的未处理异常”。
这是我的代码:
private void Employees_FormClosing(object sender, FormClosingEventArgs e)
{
(MdiParent as MainForm).setStatusText = "Ready";
}
我的MdiParent表单中有以下代码:
public string setStatusText
{
set
{
tsStatus.Text = value;
}
}
我也对Employees_FormClosed事件进行了尝试,但仍然收到相同的错误。
我只是看不到为什么在实例化类时为什么给我一个空引用。
最佳答案
此代码来自您的评论:
private void addEmployeeToolStripMenuItem_Click(object sender, EventArgs e)
{
Employees emp = new Employees();
emp.MdiParent = this.MdiParent;
emp.Show();
tsStatus.Text = "Adding Employee";
}
当我理解正确时,您的
setStatusText
方法与addEmployeeToolStripMenuItem_Click
方法在同一类中。这意味着
emp.MdiParent = this.MdiParent;
行是错误的。它应该为
emp.MdiParent = this;
,因为您不想将父母设置为孩子,所以您希望将自己设置为孩子的父母。编辑:
当使用
NullReferenceException
时得到as
可能意味着两件事。您的变量(在本例中为
MdiParent
)为null
,或者您的变量类型不正确,在本例中为MainForm
。