将EventHandler作为参数从C#传递到VB.NET
我有现有的VB GUI代码,我正在尝试与一些C#代码交互,但无法解决如何将EventHandler传递到VB.NET C#签名为:将EventHandler作为参数从C#传递到VB.NET,c#,vb.net,event-handling,C#,Vb.net,Event Handling,我有现有的VB GUI代码,我正在尝试与一些C#代码交互,但无法解决如何将EventHandler传递到VB.NET C#签名为: public void SendLatestImages(Guid PatientID, Guid ToPracticeID, EventHandler<ProgressChangedEventArgs> progressChangedHandler) { ... } 到目前为止还不错。但在ProgressStream_
public void SendLatestImages(Guid PatientID, Guid ToPracticeID, EventHandler<ProgressChangedEventArgs> progressChangedHandler)
{
...
}
到目前为止还不错。但在ProgressStream_ProgressChanged函数中,我只得到:
Private Function ProgressStream_ProgressChanged() As EventHandler(Of SLSyncClient.ProgressChangedEventArgs)
End Function
。。。无法访问我正在查找的实际ProgressChangedEventArgs。在C#中,最后一个函数的签名是
private void ProgressStream_ProgressChanged(object sender, ProgressChangedEventArgs e)
。。。这给了我args作为e。
这里我遗漏了什么?您的问题是
ProgressStream\u ProgressChanged
是一个返回事件处理程序的方法,而不是一个作为事件处理程序本身的方法。您的代码所做的是调用ProgressStream\u ProgressChanged
(在VB中不需要括号),并将其结果传递给SendLatestImages
您要做的是将ProgressStream\u ProgressChanged
转换为与EventHandler
委托匹配的Sub
(而不是返回它的函数):
然后,您可以使用AddressOf
从中创建一个委托(在C中,您不需要任何运算符,在VB中则需要):
完美的我找不到他的地址。(我用正确的签名试过潜艇)。谢谢你@svick
private void ProgressStream_ProgressChanged(object sender, ProgressChangedEventArgs e)
Private Sub ProgressStream_ProgressChanged(sender As Object, args As ProgressChangedEventArgs)
End Sub
sendImages.SendLatestImages(arg.PatientID, arg.ToPracticeID, AddressOf ProgressStream_ProgressChanged)