Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用从VB.NET引发的C#处理事件_C#_.net_Vb.net_Events_Raiseevent - Fatal编程技术网

使用从VB.NET引发的C#处理事件

使用从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

我正在设法安排一些活动

我有我的主项目,用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 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