Migrating 'Handles' from VB.NET to C#
Asked Answered
F

1

11

I'm migrating some code from VB.NET to C# (3.5).

I find structures like:

Public Event DataLoaded(ByVal sender As Object, ByVal e As EventArgs)

Protected Sub Mag_Button_Load_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Mag_Button_Load.Click
[..]
        RaiseEvent DataLoaded(Me, EventArgs.Empty)
End Sub
[..]

'Other Class
Private Sub LoadData(ByVal sender As Object, ByVal e As System.EventArgs) Handles oData.DataLoaded
[..]
End Sub

What is the most straightforward way to translate such behaviour to C#?

Facies answered 27/4, 2009 at 16:43 Comment(0)
A
13

I recommend using the Telerik Code Converter as a start.

C# does not have that easy automatic attaching of event handlers by means of the "Handles" keyword like VB.NET does.

//EventHandler declaration
public event EventHandler  DataLoaded;
protected void Mag_Button_Load_Click(object sender, EventArgs e)
{

    //Raise Event
    if (DataLoaded != null) {
        DataLoaded(this, EventArgs.Empty);
    }
}

Also, You need to assign your event handlers to the objects like this:

Button1.Click += Button1_Click;

protected void Button1_Click(object sender, EventArgs e)
{
  //do something.
}

However C# does have the succinct ability of doing this as well:

Button1.Click += (sender, e)=>
{
    //do something
}
Amylene answered 27/4, 2009 at 16:49 Comment(2)
I think you've either forgotten the => for a lambda expression in the last piece of code (or the delegate keyword and parameter types for an anonymous method).Counterfeit
Adding lambda expressions to events can be done in VB.NET as well, with the following monstrosity: AddHandler Button1.Click, Sub (sender,e) 'do something here, or AddHandler Button1.Click, Sub (sender,e) 'do something here over multiple lines' End SubKrisha

© 2022 - 2024 — McMap. All rights reserved.