C# 当用户控件';单击时单击s按钮(此,e)
在这段代码中,Form1假定侦听用户控件中的Add按钮,并在Form1中显示消息。当我在调试模式下运行它时,它在单击时返回NullPointerReference(this,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
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);