Se non sbaglio ti serve in realtà qualcosa di più semplice:
codice:
Protected Overridable Sub OnFilterCommand(ByVal e As FilterCommandEventArgs)
  RaiseEvent FilterCommand (Me, e)
End Sub
in pratica, il RaiseEvent NomeEvento usato qui chiama (solleva) l'evento FilterCommand

mentre il RasieEvent... End RaiseEvent di prima definiva la signature del raisevent che usi qui dove infatti ora passi un Object (=me) e un eventargs (e)
attento: se non l'hai fatto da nessuna parte, ti manca la classe
FilterCommandEventArgs che deve ereditare da eventArgs, e poi
dovresti cambiare la signature di RasieEvent... End RaiseEvent
per mettere quel tipo di parametro come e (anzichè un generico
EventArgs).

EventHandler
alla fine è quel che sta dietro gli eventi (e anche alla possibilità di chiamare una funzione che stia altrove senza neanche sapere dove sta o come si chiami davvero, e anche alle callback in genere). Non te ne so dare una spiegazione semplice, per cui ho preso direttamente da msdn
http://msdn.microsoft.com/it-it/libr...nthandler.aspx
"delegato dell'evento che connette un evento al relativo gestore. Per generare un evento, sono necessari due elementi:
* Delegato che identifica il metodo che fornisce la risposta all'evento.
* Una classe che contenga i dati dell'evento.
Un delegato è un tipo che definisce una firma, ovvero il tipo del valore restituito e i tipi relativi all'elenco dei parametri di un metodo. Il tipo delegato può essere utilizzato per dichiarare una variabile che può fare riferimento a qualsiasi metodo con la stessa firma del delegato.

La firma standard di un delegato del gestore eventi definisce un metodo che non restituisce alcun valore. Il primo parametro di tale metodo è di tipo Object e fa riferimento all'istanza che genera l'evento, mentre il secondo parametro è derivato dal tipo EventArgs e contiene i dati dell'evento. Se l'evento non genera dati dell'evento, il secondo parametro è semplicemente un'istanza di EventArgs. In caso contrario, il secondo parametro è un tipo personalizzato derivato da EventArgs e contiene i campi e le proprietà in cui inserire i dati dell'evento.

EventHandler è un delegato predefinito che rappresenta in modo specifico un metodo di gestione eventi per un evento che non genera dati. Se l'evento genera dati, è necessario fornire un tipo personalizzato di dati dell'evento e creare un delegato dove il tipo del secondo parametro è rappresentato dal tipo personalizzato, oppure utilizzare la classe di delegato generica EventHandler<(Of <(TEventArgs>)>) e sostituire il tipo personalizzato al parametro del tipo generico.

Per associare l'evento al metodo di gestione dell'evento, aggiungere all'evento un'istanza del delegato. Il gestore eventi viene richiamato ogni qualvolta si verifica l'evento, a meno che non venga rimosso il delegato. "