当用户控件's按钮被单击(this,e)时抛出NullPointerException
本文关键字:this NullPointerException 单击 控件 用户 按钮 | 更新日期: 2023-09-27 18:02:20
在这段代码中,Form1假定监听用户控件中的Add按钮,并在Form1中显示消息。当我在调试模式下运行它时,它在点击(this,e)时返回NullPointerReference。有人能帮我一下吗?谢谢。
用户控制:
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");
}
抛出异常,因为没有订阅您的clicked
事件。Form1还没有创建,也许您使用了不同的构造函数,或者您后来取消了订阅。无论如何,在调用事件委托之前应该始终检查订阅。将Add_Click
中的代码更改为:
EventHandler evnt = clicked;
if (evnt != null)
evnt(this, e);
不确定为什么"clicked" EventHandler为空。您应该确保在使用EventHandler之前已初始化。例如
if(clicked != null)
{
clicked(this, e);
}