如何将C#翻译成VB.net
对于用VB.net编写的项目,我想使用中的如何将C#翻译成VB.net,c#,vb.net,code-conversion,C#,Vb.net,Code Conversion,对于用VB.net编写的项目,我想使用中的PropertyChangeNotifier类,至少我想尝试一下它是否有帮助 由于最初的类是用C语言编写的,我试图将这个类翻译成VB.net,但是有一个函数我无法编译,我不知道为什么,也许你可以帮我 C#中的原始功能是: 我的(稍加修改的)翻译(以及几个网站的自动翻译)是: 如果我删除RaiseEvent编译器告诉我,ValueChanged是一个事件,不能直接调用,我应该使用RaiseEvent。但是当我使用RaiseEvent时,编译器会告诉我 未声
PropertyChangeNotifier
类,至少我想尝试一下它是否有帮助
由于最初的类是用C语言编写的,我试图将这个类翻译成VB.net,但是有一个函数我无法编译,我不知道为什么,也许你可以帮我
C#中的原始功能是:
我的(稍加修改的)翻译(以及几个网站的自动翻译)是:
如果我删除RaiseEvent
编译器告诉我,ValueChanged
是一个事件,不能直接调用,我应该使用RaiseEvent
。但是当我使用RaiseEvent
时,编译器会告诉我
未声明“通知程序”。它可能由于其自身的原因而无法访问
保护级别
但是正如你所看到的,
通知程序
被声明了几行。我自己找到了一个解决方案。它并没有解释错误消息,但至少它正在编译,希望以后能正常工作
Private Shared Sub OnPropertyChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
Dim notifier As PropertyChangeNotifier = CType(d, PropertyChangeNotifier)
If notifier.ValueChanged IsNot Nothing Then RaiseEvent notifier.ValueChanged(notifier, EventArgs.Empty)
End Sub
我刚刚在类本身中添加了以下内容:
Private Sub OnValueChanged(sender As Object, e As EventArgs)
RaiseEvent ValueChanged(sender, e)
End Sub
然后,我调用我的新过程,而不是自己在函数OnPropertyChanged
中引发事件:
Private Shared Sub OnPropertyChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
Dim notifier As PropertyChangeNotifier
notifier = TryCast(d, PropertyChangeNotifier)
If (notifier Is Nothing) Then
Exit Sub
End If
notifier.OnValueChanged(notifier, EventArgs.Empty)
End Sub
notifier.ValueChanged
都告诉我这是一个事件,不能直接调用。Public event ValueChanged As EventHandler'是一个事件,不能直接调用。使用“RaiseEvent”语句引发事件。if语句中的notifier.ValueChanged
已引发该错误,只需将RaiseEvent notifier.ValueChanged(notifier,EventArgs.Empty)
更改为RaiseEvent ValueChanged(notifier,EventArgs.Empty)
我在一个静态函数中,ValueChanged
事件是PropertyChangeNotifier
类的非静态事件。哦,错过了静态。有一个免费的Visual Studio插件可以将C#翻译成VB.NET并返回。这些自动翻译只能处理简单的代码部分,它们在这里不起作用,我试过几次。你们并没有在你们的问题中发布这个细节。自我回答和那个些并没有发布,也并没有在主要问题中提到的来源有关。
Private Sub OnValueChanged(sender As Object, e As EventArgs)
RaiseEvent ValueChanged(sender, e)
End Sub
Private Shared Sub OnPropertyChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
Dim notifier As PropertyChangeNotifier
notifier = TryCast(d, PropertyChangeNotifier)
If (notifier Is Nothing) Then
Exit Sub
End If
notifier.OnValueChanged(notifier, EventArgs.Empty)
End Sub