【问题标题】:Converting a c# snippet to vb .net (re EventHandler)将 c# 片段转换为 vb .net (re EventHandler)
【发布时间】:2014-06-18 14:28:55
【问题描述】:

我已经离开循环有一段时间了,现在又开始编码了。

我在将特定的 c# sn-p 转换为 vb .net 时遇到问题。任何帮助将不胜感激:

public Form1()
{
    // Add a listener for usb events
    myUsbDevice.usbEvent += new usbDevice.usbEventsHandler(usbEvent_receiver);
}

private void usbEvent_receiver(object o, EventArgs e)
{
    // Do Stuff
}

相关位是:

// usbDevice Class        
public delegate void usbEventsHandler(object sender, EventArgs e);
public event usbEventsHandler usbEvent;

我的转化是这样的:

// usbDevice Class
Public Delegate Sub usbEventsHandler(sender As Object, e As EventArgs)
Public Event usbEvent As usbEventsHandler

& 这不起作用(显然):

Private Sub Form1()
    myUsbDevice.usbEvent += New usbDevice.usbEventsHandler(AddressOf usbEvent_receiver)  // this doesn't work. Says to use RaiseEvent although I think it should just be an AddHandler
End Sub

Private Sub usbEvent_receiver(o As Object, e As EventArgs)
    // Do stuff
End Sub

我只是不太确定如何转换它。 仅仅使用 AddHandler 似乎没有意义,也不会:

AddHandler myUsbDevice.usbEvent, Sub usbEvent_receiver() // am missing 'o' object and 'e' eventargs + the whole usbDevice.usbEventsHandler bit is gone and I don't think/know whether that's right.

【问题讨论】:

    标签: c# .net vb.net events


    【解决方案1】:

    在这种情况下,c# 中的+= 正在分配一个事件处理程序。

    要在 VB 中执行此操作,它看起来像:

    AddHandler myUsbDevice.usbEvent, AddressOf usbEvent_receiver
    

    对象的o 和事件参数的e 无需显式命名即可传递。

    您已经正确设置了usbEvent_receiver 的签名。 VB 将完成其余的传递参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      相关资源
      最近更新 更多