引发事件时的NullReferenceError
本文关键字:NullReferenceError 事件 | 更新日期: 2023-09-27 18:06:00
我有一个小的用户控件,其中有一个文本框和一个按钮。我在包含用户控件的页面中有一个标签。在用户控件的按钮单击事件中,我想找出用户输入值的区域,并希望在主页面的标签中显示该区域。
用户控件
public partial class WebUserControl1 : System.Web.UI.UserControl
{
public delegate void myeventhandler(object sender,MyEventArgs e);
public event myeventhandler MyEvent;
protected void Button1_Click(object sender, EventArgs e)
{
int radious= Convert.ToInt32(TextBox1.Text);
double area = 3.14 * radious * radious;
MyEventArgs myeventargs = new MyEventArgs();
myeventargs.Area = area;
MyEvent(this, myeventargs);
}
}
public class MyEventArgs : EventArgs
{
public double Area { set; get; }
}
主页public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WebUserControl1 objuc = new WebUserControl1();
objuc.MyEvent += new WebUserControl1.myeventhandler(DisplayArea);
}
public void DisplayArea(object sender,MyEventArgs e)
{
Label1.Text = e.Area.ToString();
}
}
但我得到一个NullReferenceError在行
MyEvent(this, myeventargs);
在触发MyEvent之前必须检查它是否为空。
if(null != MyEvent)
MyEvent(this, myeventargs);