当子窗体关闭时,我想在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

08-27 00:19