我有一个小的用户控件,里面有一个文本框和一个按钮。我在页面中有一个标签,用于保存用户控件。在用户控件的按钮单击事件中,我想找出用户输入值的区域,并希望在主页上的标签中显示该区域。
用户控件
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();
}
}
但是我在行
上得到一个NullReferenceErrorMyEvent(this, myeventargs);
答案 0 :(得分:1)
在触发之前,您必须检查MyEvent是否为空。
if(null != MyEvent)
MyEvent(this, myeventargs);