在关闭事件上更改另一个窗体文本

本文关键字:另一个 窗体 文本 事件 | 更新日期: 2023-09-27 17:49:55

我想改变一个标签的文本在我的MdiParent表单当一个子窗体关闭。但是我得到这个错误"类型为'System '的未处理异常。NullReferenceException' occurred in yourprogram.exe '。这是我的代码:

        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)。