I'm currently learning about raising events and remembered your question. This isn't exactly what you asked but it has similar functionality. It's just a test program so is very simple but you could change it to suit your needs.
I have a Windows form (Form1) with a panel (Panel1) and two buttons (Button1 and Button2) placed in the panel. When the form loads I set the panel background colour. Then the colour changes depending on which button is clicked. Of course the colour changes could be handled directly in the Button.Click events, but then we wouldn't learn anything!
Imports System.Drawing
Public Class Form1
Public WithEvents mColour As tstChangeColour
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Panel1.BackColor = Color.Azure
mColour = New tstChangeColour
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
mColour.selectColour(Color.DarkTurquoise)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
mColour.selectColour(Color.DarkSalmon)
End Sub
Private Sub mColour_toggleColour(ByVal newCol As System.Drawing.Color) Handles mColour.toggleColour
Me.Panel1.BackColor = newCol
End Sub
End Class
Public Class tstChangeColour
Public Event toggleColour(ByVal newColour As System.Drawing.Color)
Public Sub selectColour(ByVal setColour As System.Drawing.Color)
RaiseEvent toggleColour(setColour)
End Sub
End Class
Hope this helps.