C# 当用户控件';单击时单击s按钮(此,e)

C# 当用户控件';单击时单击s按钮(此,e),c#,winforms,C#,Winforms,在这段代码中,Form1假定侦听用户控件中的Add按钮,并在Form1中显示消息。当我在调试模式下运行它时,它在单击时返回NullPointerReference(this,e)。有人能帮我吗?谢谢 用户控制: public event EventHandler clicked; public DataInput() { InitializeComponent(); Add.Click+= new EventHandler(Add_Click); } private void A

在这段代码中,Form1假定侦听用户控件中的Add按钮,并在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);
}
表格:

不确定“单击的”EventHandler为什么为空。 在使用之前,应始终确保EventHandler已初始化。 i、 e


引发异常,因为没有订阅您单击的
事件。要么Form1尚未创建,要么您正在使用不同的构造函数,要么您稍后取消订阅。
无论如何,在调用事件委托之前,应该始终检查订阅。
在
添加中更改代码单击
以:

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

从未听说过NullPointerReference:)说真的,异常是发生在clicked内部还是在clicked内部?clicked是如何定义的?-1对于无意义的异常名称,对此表示担忧,它称为NullReferenceException,在clicked时抛出(this,e);它运行时没有抛出异常。但是,form1无法侦听单击。感谢这正是引发异常的原因。form1未执行订阅事件的代码(
dataInput.clicked+=new EventHandler(OnChanged);
if(clicked != null)
{
    clicked(this, e);
}
EventHandler evnt = clicked;
if (evnt != null)
    evnt(this, e);