2009-12-16 4 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 не столь же надежна, как и C#. В частности, lambdas VB.NET должен быть выражением, поэтому вы должны либо вернуть значение, либо вызвать 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

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

я пытался конвертер Developer Фьюжн и Telerik конвертер .. конвертированы код дает мне ошибки компиляции время ... как использование RaiseEvent .. . new для vb.net ..so здесь ... – Manohar

+1

События в VB.NET используют 'AddHandler' и' RemoveHandler', а не синтаксис оператора C#, как вы здесь. –

+0

получить ошибки во время компиляции с синтаксисом выше .. с использованием синтаксиса Адама ... в любом случае thanx для повтора и +1 – Manohar

1

Вы можете загрузить его в приложение, создать его, а затем открыть приложение в .NET-отражателе. .NET Reflector может взять IL и "превратить его в" C#/VB.NET и т.д.

+0

Я попробую это .. спасибо – Manohar