单击用户控件的按钮时抛出NullPointerException(this,e)

时间:2013-03-05 23:46:37

标签: c# winforms

在此代码中,Form1假设在用户控件中侦听“添加”按钮并在Form1中显示该消息。当我在调试模式下运行它时,它会在单击时返回NullPointerReference(this,e)。有人可以帮我弄这个吗?感谢。

用户控制:

public event EventHandler clicked;

public DataInput()
{
   InitializeComponent();
   Add.Click+= new EventHandler(Add_Click);
}

private void Add_Click(object sender, EventArgs e)
{
   items = textBox1.Text.PadRight(15) + textBox2.Text.PadRight(15) + textBox3.Text.PadRight(15);
   clicked(this, e);
}

形式:

public Form1()
{
   InitializeComponent();
   dataInput.clicked+= new EventHandler(OnChanged);
}

public void OnChanged(Object sender, EventArgs e)
{
   MessageBox.Show("testing");
}

2 个答案:

答案 0 :(得分:4)

抛出异常,因为您的clicked事件没有订阅。 Form1尚未创建,也许您正在使用不同的构造函数,或者您以后取消订阅。 无论如何,在调用事件委托之前,您应该始终检查订阅。 将Add_Click中的代码更改为:

EventHandler evnt = clicked;
if (evnt != null)
    evnt(this, e);

答案 1 :(得分:2)

不确定为什么“clicked”EventHandler为null。 在使用之前,您应始终确保已初始化EventHandler。 即。

if(clicked != null)
{
    clicked(this, e);
}