Sorry for the late reply. It's for an IRC client so there are loads of events going on often. Most events will be passing data for example a OnJoinedEvent would pass nick, address, #channel

vb Code:
  1. Public Class UserJoinedChannelEventArgs
  2.     Inherits EventArgs
  3.  
  4.     Private ReadOnly m_nick As String
  5.     Private ReadOnly m_channel As String
  6.  
  7.     Public ReadOnly Property Nick() As String
  8.         Get
  9.             Return Me.m_nick
  10.         End Get
  11.     End Property
  12.  
  13.     Public ReadOnly Property Channel() As String
  14.         Get
  15.             Return Me.m_channel
  16.         End Get
  17.     End Property
  18.  
  19.     Public Sub New(ByVal nick As String, ByVal channel As String)
  20.         Me.m_nick = nick
  21.         Me.m_channel = channel
  22.     End Sub
  23. End Class

vb Code:
  1. Public Class SomeIrcClass
  2.  
  3.     Public Event OnUserJoining As EventHandler(Of UserJoinedChannelEventArgs)
  4.  
  5.     Protected Overridable Sub OnUserJoined(ByVal e As UserJoinedChannelEventArgs)
  6.         RaiseEvent OnUserJoining(Me, e)
  7.     End Sub
  8.  
  9.     Private Sub SomeEvent()
  10.         ' read the stream
  11.         '
  12.         ' user joined
  13.         Me.OnUserJoined(New UserJoinedChannelEventArgs("nick", "#channel"))
  14.     End Sub
  15. End Class

This look about right? So each event should have it's own class? Looks like i have a lot of writing todo