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

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