Inherited Form.Text - 未设置为对象实例的对象引用 - 自定义类

时间:2015-12-07 17:05:54

标签: c# winforms class inheritance

所以我正在处理表单继承,并且我覆盖了基本表单的.Text()属性。除非我尝试调用自定义类属性,否则一切都可以继承。

public partial class baseForm : Form
{
    public baseForm() { InitializeComponent(); }
    public override string Text
    {
        get
        {
            return base.Text;
        }
        set
        {
            base.Text = value + " - " + customClass.employee.userId;
        }
    }
}

当我通过派生类中断的设计者启用customClass.employee.userId的代码时,我收到错误消息"对象引用未设置为对象的实例。"我的代码编译没有错误,在运行期间,甚至按计划正确执行。结果在那里,但我需要设计师。

如何让设计师在开发过程中不必一直注释掉这一行,然后将其取消注释以进行生产?

修改 customClass在运行时以登录形式在整个应用程序中实例化。在我登录期间,在frmLogin.cs中,成功登录后,我设置了该类的对象。

customClass.employee = new customClass.clsEMPLOYEEModel(connectionString, userId.Text);


public static class customClass
{
    public static clsDynamicClass.clsEMPLOYEEModel employee
    {
        get
        {
            return _employee;
        }
        set
        {
            _employee = value;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

  

在运行时为整个应用程序在登录表单中实例化的customClass

这意味着employee属性未设置为设计时。我建议在构造函数中使用“虚拟”值初始化employee,或者在setter中检查null

public override string Text
{
    get
    {
        return base.Text;
    }
    set
    {
        if(customClass != null && customClass.employee != null)
            base.Text = value + " - " + customClass.employee.userId;
        else
            base.Text = value;
    }
}