任何人都可以将以下语法翻译为 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()
{...}
这是:
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
有很多在线转换器,下次你应该先尝试一下,如果它不起作用或者你有问题,请在这里发帖。
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
您可能会发现“C# 和 VB.NET 比较备忘单”很有用。 http://aspalliance.com/625
您可以将其放入应用程序中,构建它,然后在 .NET Reflector 中打开该应用程序。 .NET Reflector 可以获取 IL 并将其“转换为”C#/VB.NET 等