我正在尝试将一些C#代码转换为VB.NET。
我在C#(有效)中有以下内容
m_switchImageTimer = new DispatcherTimer();
m_switchImageTimer.Interval = Interval;
m_switchImageTimer.Tick += (s, e) => LoadNextImage();
我努力转换成功的关键是:
m_switchImageTimer.Tick += (s, e) => LoadNextImage();
我试过的是:
m_switchImageTimer.Tick += Function(s, e) LoadNextImage()
m_switchImageTimer.Tick += New EventHandler(AddressOf LoadNextImage)
这些都不起作用。
第一次尝试产生两个错误,第一个VS2010突出显示在m_switchImageTimer.Tick下:
错误1'公共事件标记(sender As Object,e As System.EventArgs)'是一个事件,不能直接调用。使用'RaiseEvent'语句来引发事件
并在LoadNextImage()下突出显示会产生以下错误:
错误3表达式不会产生值。
第二次尝试产生相同的错误:
错误1'公共事件标记(sender As Object,e As System.EventArgs)'是一个事件,不能直接调用。使用'RaiseEvent'语句来引发事件。
如何将C#代码转换为VB.NET?
由于 本
答案 0 :(得分:12)
订阅VB.NET中的事件需要AddHandler或Handles关键字。你也会遇到lambda的问题,Function关键字需要一个返回值的表达式。在VS2010中,你可以这样写:
AddHandler m_switchImageTimer.Tick, Sub(s, e) LoadNextImage()
在早期版本中,您需要更改LoadNextImage()方法声明或使用具有正确签名的小私有帮助器方法:
AddHandler m_switchImageTimer.Tick, AddressOf SwitchImageTimer_Tick
...
Private Sub SwitchImageTimer_Tick(sender As Object, e As EventArgs)
LoadNextImage()
End Sub