Gestire gli eventi di una classe VB.Net in VB6

lunedì 22 dicembre 2008 - 17.37

alisandre Profilo | Newbie

Ciao a tutti. Ho creato una classe VB.NET con eventi da utilizzare in VB6, quindi in VB6 la dichiarazione di tale classe dovrebbe essere:

Public WithEvents instance as new NameSpace.NomeClasse

Quando compilo però ottengo l'errore:

"L'oggetto non può essere origine di eventi di automazione"

Se tolgo il WithEvents il programma in VB6 compila, istanzia perfettamente la classe e ne riesce a richiamare i metodi, ma non cattura (ovviamente) gli eventi.
Qualcuno sa come si fa?
Grazie mille. Alessandra.


Ho risolto da sola :)
Per gestire gli eventi di una classe di .NET in VB6 bisogna scaricare il Microsoft Interop Forms Toolkit 2.0.
(http://www.microsoft.com/downloads/details.aspx?familyid=934DE3C5-DC85-4065-9327-96801E57B81D&displaylang=en).
Una volta installato questo pacchetto avviare un progetto di VS scegliendo come modello "VB6 Interop UserControl", che è un progetto già compatibile con VB6. Non appena la DLL è pronta bisogna generarla/compilarla, tra tutti i file generati si trova un .TLB che deve essere registrato col comando REGTLIB. A questo punto bisogna aggiungere al progetto in VB6 i riferimenti sia alla DLL registrata che al "Microsoft InteropForm Toolkit Library (Progetto-->Riferimenti).
Adesso si può richiamare la classe con i suoi eventi nel classico modo:

Public WithEvents nomeIstanza as NameSpace.NomeClasse

Sub nomeIstanza_evento(ByVal argument as Type)
//istruzioni
End Sub

In ogni caso quando installate il toolkit trovate una dettagliatissima guida.
Grazie lo stesso. Spero possa essere utile a qualcuno. Alessandra.

padronfrodo88 Profilo | Junior Member

>Ciao a tutti. Ho creato una classe VB.NET con eventi da utilizzare
>in VB6, quindi in VB6 la dichiarazione di tale classe dovrebbe
>essere:
>
>Public WithEvents instance as new NameSpace.NomeClasse
>
>Quando compilo però ottengo l'errore:
>
>"L'oggetto non può essere origine di eventi di automazione"
>
>Se tolgo il WithEvents il programma in VB6 compila, istanzia
>perfettamente la classe e ne riesce a richiamare i metodi, ma
>non cattura (ovviamente) gli eventi.
>Qualcuno sa come si fa?
>Grazie mille. Alessandra.
>
>
>Ho risolto da sola :)
>Per gestire gli eventi di una classe di .NET in VB6 bisogna scaricare
>il Microsoft Interop Forms Toolkit 2.0.
>(http://www.microsoft.com/downloads/details.aspx?familyid=934DE3C5-DC85-4065-9327-96801E57B81D&displaylang=en).
>Una volta installato questo pacchetto avviare un progetto di
>VS scegliendo come modello "VB6 Interop UserControl", che è un
>progetto già compatibile con VB6.
>In VB6 poi bisogna richiamare la classe e gli eventi nel classico
>modo:
>
>Public WithEvents nomeIstanza as NameSpace.NomeClasse
>
>Sub nomeIstanza_Click(ByVal argument as Type)
> //istruzioni
>End Sub
>
>In ogni caso quando installate il toolkit trovate una dettagliatissima
>guida.
>Grazie lo stesso. Spero possa essere utile a qualcuno. Alessandra.
>
>
Ciao ale...
Voglio capire solo una cosa...una volta creato il progetto in visuao studio come facciio a importare le classi in vb6?!
L. Michele

alisandre Profilo | Newbie

Ciao e buon anno!
Una volta creata la DLL "compatibile" bisogna generarla/compilarla nel percorso più conveniente ai tuoi scopi, tra tutti i file generati trovi un .TLB che deve essere registrato col comando REGTLIB.
A questo punto bisogna aggiungere al progetto in VB6 i riferimenti sia alla DLL che hai registrato sia al Microsoft InteropForm Toolkit Library (Progetto-->Riferimenti).
Spero di essere stata chiara ;) Ciao e ancora auguri!


Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5