QuickCode Sample: Declaring events in C# and VB.NET
Declaring events consistently
I find declaring events in VB.NET much easier than in C#. I can't seem to remember the conventions, and how to use delegates. To save me the effort to reproduce this every time I need an event, and to make sure I use a consistent pattern in both C# and VB.NET, the two following QuickCodes help. The first is event %%eventname%%. When applied to the line
event MatchFound
this expands to
' Delegate for the MatchFound event
Public Event MatchFound As EventHandler
' Raise the MatchFound event
Protected Sub OnMatchFound()
RaiseEvent MatchFound(Me, EventArgs.Empty)
End Sub
in VB.NET, and to
// Delegate for the MatchFound event
public EventHandler MatchFound;
// Raise the MatchFound event
protected void OnMatchFound()
{
if (this.MatchFound != null)
this.MatchFound(this, EventArgs.Empty);
}
in C#.
Events with custom event arguments
A more complex version eventc %%eventname%% expands the line
eventc MatchFound
to an event declaration with corresponding EventArgs derived class for its arguments;
' Event argument class for the MatchFound event
Public Class MatchFoundEventArgs
Inherits EventArgs
Public Sub New()
' TODO: Insert constructor code here
End Sub
End Class
' The MatchFound event
Public Event MatchFound As EventHandler(Of MatchFoundEventArgs)
' Raise the MatchFound event
Protected Sub OnMatchFound()
RaiseEvent MatchFound(Me, New MatchFoundEventArgs())
End Sub
in VB.NET and to
// Event argument class for the MatchFound event
public class MatchFoundEventArgs : EventArgs
{
public MatchFoundEventArgs()
{
// TODO: Insert constructor code here
}
}
// Delegate for the MatchFound event
public delegate void MatchFoundDelegate(object sender, MatchFoundEventArgs e);
// The actual MatchFound event
public event MatchFoundDelegate MatchFound;
// Raise the MatchFound event
protected void OnMatchFound()
{
if (this.MatchFound != null)
this.MatchFound(this, new MatchFoundEventArgs());
}
in C#.
Copy the sample QuickCodes
Copy this XML fragment to the clipboard, then paste it into QuickCode.NET to get the two patterns event (Simple event) and eventc (Event with argument class), both for C# and VB.NET. (How? Click on the link, view the source to get to the underlying XML, copy that to the clipboard, right-click on the list of QuickCodes in Visual Studio and select Paste.)