C#到VB.Net语法转换

时间:2009-12-16 18:13:51

标签: vb.net

任何人都可以将以下语法翻译成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()
        {...}

4 个答案:

答案 0 :(得分:6)

尽管接受率为25%,但这是:

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

您对AddValueChanged的调用无法直接翻译,因为VB.NET的lambda表达式支持不如C#强大。特别是,VB.NET lambdas必须是一个表达式,因此您必须返回一个值或调用Function。在您的情况下,您将调用Sub,这在VB.NET中是不允许的。您应该考虑将UpdateAdorner的签名更改为标准事件处理程序(如TextBoxLoaded方法),并将AddressOf UpdateAdoerner传递给AddValueChanged

像这样:

containsTextProp.AddValueChanged(m_TextBox, AddressOf UpdateAdorner);

...

Private Sub UpdateAdorner(ByVal sender as Object, ByVal e as EventArgs)
    ... 
End Sub

答案 1 :(得分:3)

有很多online converters,您可能应该在下次首次尝试,如果不起作用或者您遇到问题,请在此处发帖。

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

答案 2 :(得分:1)

您可能会发现“C#和VB.NET比较备忘单”很有用。 http://aspalliance.com/625

答案 3 :(得分:1)

你可以在应用程序中抛出它,构建它,然后在.NET反射器中打开应用程序。 .NET Reflector可以使用IL并“将其转换为”C#/ VB.NET等。