Dirt Simple C# .NET Custom Event for UserControl
Here’s my simple version
using System.ComponentModel;
//Define a class to hold the event arguments, if one isn't already defined.
public class DesignEventArgs : EventArgs
{
private DesignListItem item;
public DesignEventArgs(DesignListItem item)
{
this.item = item;
}
public DesignListItem Item
{
get { return this.item; }
}
}
//Create a delegate handler outside the user control class
public delegate void SelectionChangedEventHandler(object sender, DesignEventArgs e);
public partial class MySimpleUserControl : UserControl
{
//Declare the event using the delegate handler. Set a Browsable so it shows in the designer
[Browsable(true)]
public event SelectionChangedEventHandler SelectionChangedEvent;
//Method that raises the event
protected virtual void OnSelectionChangedEvent(DesignEventArgs e)
{
//Ensure the event is not null
SelectionChangedEventHandler sceh = this.SelectionChangedEvent;
if (sceh !=null)
sceh(this, e);
}
//Finally, the method which raises the event
public void DoStuffToRaiseEvent()
{
//data for event args
DesignListItem listItem = new DesignListItem();
//build event args
DesignEventArgs args = new DesignEventArgs(listItem);
//Raise the event
OnSelectionChangedEvent(args);
}
}
Now, over on the form… If your event is NOT displayed in the Designer’s Event List, you’ve done something wrong but this should register the event.
//In the form constructor add:
myUserControl.DesignChangedEvent += new DesignChangedEventHandler(myUserControl_DesignChangedEvent);
//And add this method:
protected void myUserControl_DesignChangedEvent(object sender, DesignEventArgs e)
{
//Do your stuff
}
Leave a Reply