40 messaggi dal 10 maggio 2005
Ciao,
ho provato in diversi modi a esporre un evento di una classe COM library scritta in vb.net ed intercettarlo da JScript in una hosted HTML application. La classe non ha interfaccia grafica ho semplicemente utilizzato aggiungi nuovo elemento da VS.NET --> Classe COM ed ho scritto il codice identico a qualsiasi altra classe .NET. L'errore all'interno della pagina è "Proprietà o metodo non supportati".

Mi puoi dare un suggerimento?

Grazie.
40 messaggi dal 10 maggio 2005
Dimenticavo, i metodi e le proprietà funzionano correttamente, il problema è solo sugli eventi.
Mmm, come intercetti l'evento da js e come si chiama l'evento?

Ciao

Il mio blog
Homepage
40 messaggi dal 10 maggio 2005
da Jscript:

objDownload.DownloadComlete = onDownloadCompleted

function onDownloadCompleted(){
var MCE = window.external.MediaCenter();
var ret = MCE.Dialog("Download completed", "Download information", 1, 5, false)
}


nella classe vb:

Public Delegate Sub DownloadComleteEventHandler(ByVal Sender As Object, ByVal e As System.EventArgs)

Public Event DownloadComplete As DownloadComleteEventHandler
mm, prova la forma

<SCRIPT FOR=idoggetto EVENT=DownloadComlete LANGUAGE="JScript">


A dir la verità l'evento non l'ho mai provato, devo provare stasera, comunque un evento è composto da due metodi Add_nomeevento Remove_nomeevento, quindi volendo puoi creare il metodo per concatenare il delegate, es

private downloadComplete as DownloadComleteEventHandler

Public sub AddDownloadComplete(handler as DownloadComleteEventHandler
downloadComplete = Delegate.Combine(downloadComplete, handler)
end sub

E' un trucchetto che dovrebbe andar bene

Ciao

Il mio blog
Homepage
40 messaggi dal 10 maggio 2005
Per poter usare SCRIPT FOR..., devo anche istanziare la classe ActiveX nella forma dichiarativa anziché

var objDownload = new ActiveXObject("MyDownload10.MyDownload10X")

come è adesso?

per quanto riguarda il codice vb che mi hai suggerito, non ho capito come si integra con quello che ho scritto.
Devo eliminare la dichiarazione pubblica dell'evento, sostituendola con

private downloadComplete as DownloadComleteEventHandler

?

il codice

Public sub AddDownloadComplete(handler as DownloadComleteEventHandler
downloadComplete = Delegate.Combine(downloadComplete, handler)
end sub

va aggiunto all'interno della classe?
Ah no, non avevo pensato che lo istanziavi da codice. Sì devi togliere l'evento e mettere quel metodo con quel delegate.
In pratica facciamo noi a mano quello che fa il compilatore ma che maschera

Ciao

Il mio blog
Homepage
40 messaggi dal 10 maggio 2005
Come si genera l'evento nella funzione Download() all'interno della classe?

Ho provato con

downloadComplete.Invoke(Me, New System.EventArgs())

ma ottengo l'eccezione
"Riferimento a un oggetto non impostato su un'istanza di un oggetto"

(l'ho sparata grossa?)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.