C
Claudio Grazioli
Simplifying the code down to the following (a form with a button that fires
the event):
namespace CustomEvent
{
public delegate void MyEventHandler(object sender, MyEventArgs e);
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
public event MyEventHandler MyEvent;
protected virtual void OnMyEvent(MyEventArgs e)
{
MyEvent(this, e);
}
<< snip template form code >>
private void button1_Click(object sender, System.EventArgs e)
{
OnMyEvent(new MyEventArgs("Fred"));
}
}
public class MyEventArgs: EventArgs
{
private string name;
public MyEventArgs(string name)
{
this.name = name;
}
public string Name
{
get {return name;}
}
}
}
The problem I'm having is that the MyEvent(this, e); call fails in
OnMyEvent(...) with the following error:
"An unhandled exception of type 'System.NullReferenceException' occurred in
CustomEvent.exe
Additional information: Object reference not set to an instance of an object."
You can only fire an event, if someone is listening to it. So if nowhere is
some code that subscribed to your event like:
form1.MyEvent += new Eventhandler(dosomething);
you can't fire your event. How do you no, if someone subscribed to your
event? Simply by checking for null:
protected virtual void OnMyEvent(MyEventArgs e)
{
if (MyEvent != null)
MyEvent(this, e);
}
hth