订阅主窗体上的用户控件中的事件时出现NullReferenceException

时间:2014-07-04 12:41:33

标签: c# events user-controls nullreferenceexception

在我的User Control上,我创建了一个事件来通知我的主窗体,标签控件必须切换其标签。必须在按钮单击用户控件时触发此事件。 (我在另一个用户控件中有一个非常类似的事件正常工作)

在我的用户控件中:

public delegate void EventHandler(object sender, EventArgs args);
public event EventHandler TabChangeRequested = delegate { };

protected void OnTabChangeRequested()
{
    if (TabChangeRequested != null)
    {
        TabChangeRequested(this, new EventArgs());
    }
}

private void btnBackToSelectType_Click(object sender, EventArgs e)
{
    this.OnTabChangeRequested();
}

以我的主要形式:

public FormMain()
{
    InitializeComponent();
    myUserControl.TabChangeRequested += (sender, args) => { ChangeRunTabToType(); };           
}

private void ChangeRunTabToType()
{
    if (this != null)
        this.ChangeTabIndex(metroTabControlRun, 1);
}

当我运行我的程序时,我在行上获得NullReferenceException

myUserControl.TabChangeRequested += (sender, args) => { ChangeRunTabToType(); }; 

有谁知道它来自哪里?

1 个答案:

答案 0 :(得分:1)

如果myUserControl尚未实例化(那就是null),那么我建议移动:

myUserControl.TabChangeRequested += (sender, args) => { ChangeRunTabToType(); };     

到你创建/分配myUserControl的地方之后!