引发事件时出现空引用错误

时间:2014-05-31 22:35:43

标签: c# asp.net events

我有一个小的用户控件,里面有一个文本框和一个按钮。我在页面中有一个标签,用于保存用户控件。在用户控件的按钮单击事件中,我想找出用户输入值的区域,并希望在主页上的标签中显示该区域。

用户控件

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);

1 个答案:

答案 0 :(得分:1)

在触发之前,您必须检查MyEvent是否为空。

if(null != MyEvent)
    MyEvent(this, myeventargs);