使用从VB.NET引发的C#处理事件
我正在设法安排一些活动 我有我的主项目,用C#编写,我还添加了另一个项目,用VB.NET编写 在VB.NET项目中,我有一个类,引发了一个事件:使用从VB.NET引发的C#处理事件,c#,.net,vb.net,events,raiseevent,C#,.net,Vb.net,Events,Raiseevent,我正在设法安排一些活动 我有我的主项目,用C#编写,我还添加了另一个项目,用VB.NET编写 在VB.NET项目中,我有一个类,引发了一个事件: Public Class newMessageArgs Inherits EventArgs Public Property messageCode As String Public Property appName As String End Class Public Class EventRaiser Event
Public Class newMessageArgs
Inherits EventArgs
Public Property messageCode As String
Public Property appName As String
End Class
Public Class EventRaiser
Event NewMessage As EventHandler
Sub MessageEvent(ByVal typeEvent As String, ByVal messageCode As String, appName As String)
If typeEvent = "newMessage" Then
Dim args As newMessageArgs = New newMessageArgs()
args.appName = appName
args.messageCode = messageCode
RaiseEvent NewMessage(Me, args)
End If
End Sub
End Class
引发事件的方法是从我的VB.NET代码中调用的,但是我必须用我的C代码来处理它。我怎么做
此事件未绑定到任何xaml元素
代码更新:
正在尝试处理事件:
截图:
Attivazione是VB.NET中引发事件的类的名称。您打算这样做吗
var raiser = new EventRaiser();
raiser.NewMessage += raiser_NewMessage;
private void raiser_NewMessage(object sender, EventArgs e)
{
//handle your event here
}
但是newMessageArgs
类和NewMessage
事件应该在VB代码中公开
当然,您应该在C#project中添加对汇编的引用。修改VB代码以使用与“newMessageArgs”完全匹配的委托:
Public Delegate Sub CustomEventHandler(ByVal sender As Object, ByVal e As newMessageArgs)
Public Event NewMessage As CustomEventHandler
您的
vb.net
代理签名不正确。您需要创建一个与事件参数匹配的NewMessage
委托
Public类NewMessageEventArgs
继承事件参数
公共属性MessageCode作为字符串
公共属性AppName作为字符串
末级
公共委托子NewMessageEventHandler(发送者作为对象,e作为NewMessageEventArgs)
公共类事件引发者
公共事件NewMessage作为NewMessageEventHandler
Public Sub MessageEvent(ByVal typeEvent作为字符串,ByVal messageCode作为字符串,appName作为字符串)
如果(typeEvent=“newMessage”),则
RaiseEvent NewMessage(Me,newNewMessageEventArgs(),带{.AppName=AppName、.MessageCode=MessageCode})
如果结束
端接头
末级
它所用的语言不应该很重要。你到底有什么问题?很简单:我怎么做?如何从另一个项目中查看事件?如何在C#中声明事件处理程序并读取参数?@PieroAlberto与添加任何其他事件处理程序的方式相同。@PieroAlberto是一些独立的项目?@PieroAlberto您在VB代码中公开了newMessageArgs和NewMessage事件吗?你到底犯了什么错误?是的,它们是公开的,你可以在问题中看到。它说,raiser不包含对NewMessage@PieroAlberto检查您键入的代码。在你的问题中,你用三个“s”写了raiser.newmessage
。如果在代码中是这样的话,那就是错误来源嗯,你说得对。。。但是现在错误被改变了!:(“raiser\u NewMessage的无重载与委托system.eventhandler匹配”,在红色的raiser\u NewMessage下面加下划线
Public Delegate Sub CustomEventHandler(ByVal sender As Object, ByVal e As newMessageArgs)
Public Event NewMessage As CustomEventHandler