任何人都可以将以下语法翻译为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)
尽管接受率为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 UpdateAdoerner
给AddValueChanged
.
像这样:
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)