views:

116

answers:

4

Can any one translate the following syntax to vb.net.

m_TextBox.Loaded += TextBoxLoaded
m_TextBox.Loaded -= TextBoxLoaded;
private void TextBoxLoaded(object sender, RoutedEventArgs e)
 {
   Init();
 }

..
containsTextProp.AddValueChanged(m_TextBox, (sender, args) => UpdateAdorner());
...
private void UpdateAdorner()
        {...}
+1  A: 

You might find the "C# and VB.NET Comparison Cheat Sheet" useful. http://aspalliance.com/625

Jeremy
not much help... thanks for the replay
Rey
+3  A: 

There are plenty of online converters, you shuold probably try that first next time and post here if it doesn't work or you have a problem.

AddHandler m_TextBox.Loaded, AddressOf TextBoxLoaded     ' per @Adam Robinson'
RemoveHandler m_TextBox.Loaded, AddressOf TextBoxLoaded  ' per @Adam Robinson'

Private Sub TextBoxLoaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
  Init()
End Sub

Private Sub UpdateAdorner()

End Sub
David Glass
i tried Developer Fusion's Converter and Telerik converter.. converted code is giving me compile time errors... like use RaiseEvent ... new to vb.net ..so asked here...
Rey
Events in VB.NET use `AddHandler` and `RemoveHandler`, not the operator syntax of C# as you have here.
Adam Robinson
getting compile time errors with above syntax.. using Adam's syntax... anyway thanx for the replay and +1
Rey
@Adam, see I just used the converter and didn't notice, thanks!
David Glass
+1  A: 

You can toss it in an app, build it, then open the app in .NET reflector. .NET Reflector can take the IL and "turn it into" C#/VB.NET, etc.

Jon
i will try this .. thanks
Rey
+5  A: 

Despite the 25% acceptance rate, here it is:

AddHandler m_TextBox.Loaded, AddressOf TextBoxLoaded
RemoveHandler m_TextBox.Loaded, AddressOf TextBoxLoaded

Private Sub TextBoxLoaded(ByVal sender as Object, ByVal e as RoutedEventArgs)
    Init()
End Sub

Your call to AddValueChanged can't be directly translated, as VB.NET's lambda expression support is not as robust as C#'s. In particular, VB.NET lambdas must be an expression, so you must either return a value or call a Function. In your case, you would be calling a Sub, which isn't allowed in VB.NET. You should consider changing the signature of UpdateAdorner to be a standard event handler (like the TextBoxLoaded method) and pass AddressOf UpdateAdoerner to AddValueChanged.

Like this:

containsTextProp.AddValueChanged(m_TextBox, AddressOf UpdateAdorner);

...

Private Sub UpdateAdorner(ByVal sender as Object, ByVal e as EventArgs)
    ... 
End Sub
Adam Robinson
thanks for the Answer.. -Rey
Rey