Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

A Simple Code Snippet to Add an Event

0.00/5 (No votes)
8 Jun 2012 2  
Adding an event to your class is simple, but it needs a bit of typing. I'm lazy, so I'd rather Visual Studio did the work. This snippet works in the same way as the prop snippet.

Introduction

Adding an event to a class is pretty simple: create your event.

public event EventHandler FilterChange;

Then, create a suitable method to signal it to subscribers:

protected virtual void OnFilterChange(EventArgs e)
    {
    EventHandler eh = FilterChange;
    if (eh != null)
        {
        eh(this, e);
        }
    }

But I'm lazy. And I don't want to type all that each time! So, here we have a simple Visual Studio Snippet which types that lot for you - much the same way that "prop" gives you:

public int MyProperty { get; set; } 

Using the Code

A snippet in Visual Studio is just an XML file, with some specific data fields:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Event Template</Title>
      <Author>Paul (OriginalGriff) Griffin</Author>
      <Description>Creates an Event template - includes the Event and the OnEvent method</Description>
      <HelpUrl></HelpUrl>
      <SnippetTypes />
      <Keywords />
      <Shortcut>evh</Shortcut>
    </Header>
    <Snippet>
      <References />
      <Imports />
      <Declarations>
        <Literal Editable="true">
          <ID>Description</ID>
          <Type></Type>
          <ToolTip></ToolTip>
          <Default>Description</Default>
          <Function></Function>
        </Literal>
        <Literal Editable="true">
          <ID>Name</ID>
          <Type></Type>
          <ToolTip></ToolTip>
          <Default>Name</Default>
          <Function></Function>
        </Literal>
      </Declarations>
      <Code Language="csharp" Kind="method decl" Delimiter="$"><![CDATA[/// <summary>
/// Event to indicate $Description$
/// </summary>
public event EventHandler $Name$;
/// <summary>
/// Called to signal to subscribers that $Description$
/// </summary>
/// <param name="e"></param>
protected virtual void On$Name$(EventArgs e)
    {
    EventHandler eh = $Name$;
    if (eh != null)
        {
        eh(this, e);
        }
    }]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

You can create this using Visual Studio from "File...New...File" and selecting XML file, but when you have saved it, you will need to manually rename it to ".snippet" from ".XML", or you can download it from the link. You need to place this in the Visual Studio Snippets folder, which defaults to:

C:\Users\<UserName>\Documents\Visual Studio 2010\Code Snippets\Visual C#

For VS2019 the folder is slightly different:

C:\Users\<UserName>\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets

If you have a "My Code Snippets" folder, then it should go in there.

The simplest route is via Windows file explorer:

%USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets

Now, whenever you type the shortcut "evh" and press TAB twice, it will insert:

/// <summary>
/// Event to indicate Description
/// </summary>
public event EventHandler Name;
/// <summary>
/// Called to signal to subscribers that Description
/// </summary>
/// <param name="e"></param>
protected virtual void OnName(EventArgs e)
    {
    EventHandler eh = Name;
    if (eh != null)
        {
        eh(this, e);
        }
    }

And prompt you to enter the description and name of the event.

History

  • First version
  • 2019-06-15 Added Visual Studio 2019.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here