2013-11-22 102 views
0

我想在Visual Basic 2010中使用MIDI.NET,而它是用C#编写的。所以我得到了使用在线转换器转换它的提示,因为这些语言是相互替代的。 的一个问题,我已经是这行C#VB.net转换错误

inputDevice.NoteOn += new InputDevice.NoteOnHandler(NoteOn); 

转换到VB.NET它看起来像这样

InputDevice.NoteOn += New InputDevice.NoteOnHandler(NoteOn) 

这给了我2个错误。

  1. '公共事件NoteOn(msg As NoteOnMessage)'是一个事件,不能直接调用。使用'RaiseEvent'语句来引发一个事件。 C:\ Users \ Den Houting \ AppData \ Local \ Temporary Projects \ MIDI \ Form1.vb 14 9 MIDI

  2. 错误3委托'Midi.InputDevice.NoteOnHandler'需要'AddressOf'表达式或lambda表达式作为唯一的对其构造函数的参数。 C:\用户\书房Houting \应用程序数据\本地\临时项目\ MIDI \ Form1.vb的14 82 MIDI

当试图这样做RaiseEvent NoteOn它告诉我NoteOn不是一个事件。

谢谢。

回答

2

在VB.NET正确的语法使用AddHandler注册事件上MSDN

AddHandler InputDevice.NoteOn, AddressOf NoteOn 

更多。

+1

这是正确的答案,但在C#中,运算符+ =适用于多播委托。你可以在vb.net上发布一个多播委托的例子来得到一个完全符合C#特性的答案吗?我可以自己做,但我不想重复一个正确的答案。 – jlvaquero

+0

@jlvaquero去找吧,因为我没有时间快速完成任务,无法从头顶开始。 – Szymon

+1

谢谢!这有帮助! –