Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Subscribe to C# .net Event in VB6

Tags:

.net

com

vb6

I need to get be able to handle a .net event in VB6. So far i have it set up by making me c# class COM visible. My VB6 object can call methods on it fine but now i need some way to communicate from .net to VB. If i add an event to my c# class the .net wrapper seems to add an add_EventName and remove_EventName which i assume this is to subscribe and unsubscribe to the event. But i'm still a novice when it comes to VB6 and come so i'm not really sure how to use it.

The add_EventName seems to take an EventNameEventHadler but what do i give it? i tried the sub but this gives me a runtime error. Anyone know how to use this? Here is an example of what i have

Private oHost As HostService.IHost

Private Sub Form_Load()
    Set oHost = New HostService.Host
    oHost.Start
    oHost.add_EvalReceived EvalReceivedEventHandler
End Sub

Private Sub EvalReceivedEventHandler(ByVal sender As Variant, ByVal e As EvalReceivedEventArgs)
MsgBox "Eval Received in VB: " & e.Eval.TimeSent & ":" & e.Eval.FirstName & " " & e.Eval.LastName & " - " & e.Eval.Comments
End Sub

So oHost.add_EvalReceived line is wrong

like image 266
Ryan Burnham Avatar asked Aug 16 '11 08:08

Ryan Burnham


1 Answers

You could try adding WithEvents to your declaration of oHost

Private WithEvents oHost As HostService.IHost

Then the IDE should allow you to create event handlers on oHost. It's just like making your Form_Load event handler. The drop-down at the top-left of the code window should let you select oHost.

Disclaimer: I've used this many times to handle events from COM objects. I've never actually tried handling events from a .Net object through interop, but I would think you must do it like this.

like image 190
MarkJ Avatar answered Oct 12 '22 18:10

MarkJ