【问题标题】:C# to VB.net convertion errorC# 到 VB.net 转换错误
【发布时间】:2013-11-22 10:46:59
【问题描述】:

我正在尝试在 Visual Basic 2010 中使用 MIDI.NET,而它是用 C# 编写的。所以我得到了使用在线转换器转换它的提示,因为这些语言彼此非常相似。 我遇到的一个问题是这一行

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

转换成 vb.net 看起来是这样的

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

这给了我 2 个错误。

  1. 'Public Event 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:\Users\Den Houting\AppData\Local\Temporary Projects\MIDI\Form1.vb 14 82 MIDI

当尝试做类似RaiseEvent NoteOn 的事情时,它告诉我 NoteOn 不是一个事件。

谢谢。

【问题讨论】:

    标签: c# vb.net visual-studio-2010 error-handling


    【解决方案1】:

    VB.NET 中的正确语法使用AddHandler 来注册事件

    AddHandler InputDevice.NoteOn, AddressOf NoteOn
    

    更多关于MSDN

    【讨论】:

    • 这是正确的答案,但在 C# 中,运算符 += 适用于多播委托。您可以在 vb.net 中发布一个多播委托示例以获得与 C# 功能匹配的完整答案吗?我可以自己做,但我不想重复正确的答案。
    • @jlvaquero 去做吧,因为我没有时间快速做,也不能从头顶做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多