C#到VB.Net语法转换

Man*_*har 2 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()
        {...}
Run Code Online (Sandbox Code Playgroud)

Ada*_*son 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
Run Code Online (Sandbox Code Playgroud)

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

像这样:

containsTextProp.AddValueChanged(m_TextBox, AddressOf UpdateAdorner);

...

Private Sub UpdateAdorner(ByVal sender as Object, ByVal e as EventArgs)
    ... 
End Sub
Run Code Online (Sandbox Code Playgroud)