2009-12-16 122 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