Search code examples
c#vb.neteventstimerhandles

what is the equivalent of visual basic withevents and handles in C#


I try to convert a Visual Basic (VB) project to C# and I have no idea how to change some of codes below,

In a windows form a field and a Timer object defined like this;

Public WithEvents tim As New Timer
...
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tim.Tick
End Sub
...

How to rewrite this lines in C#?


Solution

  • In C# you enrol an EventHandler by registering a method delegate with the event using the += operator as follows:

    public Timer tim = new Timer();
    tim.Tick += Timer1_Tick;
    
    private void Timer1_Tick(object sender, EventArgs e)
    {
       // Event handling code here
    } 
    

    This works because the Tick event of the Timer class implements an Event as follows:

    public event EventHandler Tick
    

    and EventHandler is a method delegate with signature:

    public delegate void EventHandler(
        Object sender,
        EventArgs e
    )
    

    which is why any method that conforms to the EventHandler signature can be used as a handler.