委托事件处理程序为空

时间:2019-02-04 05:55:22

标签: c# null delegates

对代表们来说还不错,所以不确定如何解决此问题,我也不知道如何形容...

1,这是我的代码

我尝试更改代码的顺序,设置== null(这显然没有用),我用Google搜索了此问题,根本找不到任何帮助...

namespace Thing
{
    public class OtherThing
    {
        public delegate void TextChangedEventHandler(object source, EventArgs args);

    public event TextChangedEventHandler TextHasChanged;

    public String BDIFormcsLabelText;

    public String TEXT
    {
        get
        {
            return BDIFormcsLabelText;
        }
        set
        {
            BDIFormcsLabelText = value;
            OnTextHasChanged();

        }
    }

    protected virtual void OnTextHasChanged()
    {
        if (TextHasChanged != null) // <---- THIS IS NULL
        {
            TextHasChanged(this, EventArgs.Empty);
        }
    }
 }
}

我试图获取它以检测变量BDIFormcsLabelText中的更改,然后触发一个事件。更改中的检测工作正常,它可以触发不必要的...它调用“ OnTextHasChanged”事件处理程序,但是代码中标记为null的内容为null,我似乎无法弄清楚。它会抛出错误

  

“ System.NullReferenceException:'对象引用未设置为   对象的实例。'“

我对此不太了解,无法进一步解释。我只知道那是什么阻止我的活动订阅者执行那里的代码。如果有人可以帮助我解决此问题,则谢谢您

事件代码的订阅者如下

    Thing thing = new Thing();

    public void BDIFormcs_Load(object sender, EventArgs e)
    {
        thing.BDIFormcsLabelText = label1.Text;
        thing.TextHasChanged += OnTextHasChanged;
    }

    public void OnTextHasChanged(object source, EventArgs e)
    {
        label1.Text = thing.BDIFormcsLabelText;
    }

0 个答案:

没有答案