2009-12-16 83 views
2

任何一种都可以将以下语法转换为vb.net。C#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() 
     {...} 

回答

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 lambda必须是一个表达式,所以你必须返回一个值或者调用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 
+0

谢谢你的答案。-Rey – Manohar 2009-12-16 18:32:18

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 
+0

我试图开发Fusion的转换器和转换器Telerik的转换..代码是给我的编译时错误...喜欢使用的RaiseEvent .. 。vb.net新手......所以在这里问... – Manohar 2009-12-16 18:23:29

+1

VB.NET中的事件使用'AddHandler'和'RemoveHandler',而不是C#的操作符语法。 – 2009-12-16 18:24:37

+0

使用上述语法获得编译时错误..使用Adam的语法...无论如何thanx重播和+1 – Manohar 2009-12-16 18:34:49

1

你可以在应用中折腾它,建立它,然后在.NET反射器中打开应用程序。 .NET反射器可以把IL和 “变成” C#/ VB.NET等

+0

我会试试这个..谢谢 – Manohar 2009-12-16 18:24:11