Oppure

Loading
18/02/11 12:07
Salve,
Sto utilizzando un controllo esterno che importo tramite una sua libreria.
L'ho inserito nel Designer della finestra in cui lo voglio mettere, ma non appare e se cerco di chiamare un suo metodo mi dice di impostare l'Handle alla finestra.
Ma Handle e ReadOnly!

Mi sapreste spiegare come fare o magari cos'è l'Handle e dove viene impostato?
18/02/11 14:17
HeDo

posta il codice, così servirebbe una sfera di cristallo.
aaa
18/02/11 14:35
Nel Designer, oltre a quello che genera VS aggiungo queste righe:
Friend WithEvents Browser As GeckoWebBrowser
'altro codice autogenerato
'
'Browser
'
Me.Browser.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                    Or System.Windows.Forms.AnchorStyles.Left) _
                    Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
        Me.Browser.Location = New System.Drawing.Point(0, 85)
        Me.Browser.Name = "Browser"
        Me.Browser.Size = New System.Drawing.Size(706, 277)
        Me.Browser.TabIndex = 4
        Me.Browser.Visible = True


Per inizializzare, uso una libreria (quella in cui è contenuto il controllo),
scaricabile qui -> code.google.com/p/geckofx/wiki/…
E poi utilizzo XULRunner, che scarico qui -> sourceforge.net/projects/xulrunnerinstal/files/XULRunner%20Installer%20Binaries/0.14/XULRunner-1.9.0.4_en-US_win32_installer-0.14.exe/…

Una volta scaricato e copiato nella cartella GeckoFX, sottocartella di quella in cui si trova la mia app, aggiungo un handler dell'evento StartUp dell'applicazione (file Application.Designer.vb)
Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
            Skybound.Gecko.Xpcom.Initialize(My.Computer.FileSystem.CurrentDirectory & "\" & "GeckoFX\Mozilla XULRunner")
        End Sub

Che mi inizializza la libreria.

Ora se io avvio l'applicazione va tutto bene, ma non mi visualizza il controllo. Se poi io premo faccio chiamare un metodo del controllo (ad es al click di un pulsante) mi lancia la seguente eccezione:
"Cannot call Navigate() before the window handle is created."

Window handle? Che è? E dove lo creo? Poichè il codice che uso per inizializzare il controllo è uguale a quello di tutti gli altri, non dovrebbe avere già un handle?
18/02/11 15:33
walker93
Avendo lavorato con il controllo GeckoWebBrowser, io per inizializzarlo carico la libreria direttamente nell'evento Form_Load
con questo codice:
        'Lo dichiaro
        Public WithEvents web As New GeckoWebBrowser
        'Nell'evento
        Xpcom.Initialize(My.Application.Info.DirectoryPath & "\xulrunner")
        web.Dock = DockStyle.Fill
        tabvista.Controls.Add(web) 'tabvista è un tabControl
        web.Visible = True

e nient'altro
aaa
19/02/11 7:09
io per inizializzarlo carico la libreria direttamente nell'evento Form_Load

Secondo voi è lì che si crea (o assegna) l'Handle?
Da quello che ho capito girando un po' per Google, l'Handle è un numero che contraddistingue ogni finestra o ogni applicazione ed è assegnato dal OS.
Ho messo nel Load del form:
Skybound.Gecko.Xpcom.Initialize(My.Computer.FileSystem.CurrentDirectory & "\" & "GeckoFX\Mozilla XULRunner")
Me.Browser.Anchor = CType((((AnchorStyles.Top Or AnchorStyles.Bottom) Or AnchorStyles.Left) Or AnchorStyles.Right), AnchorStyles)
        Me.Browser.Location = New System.Drawing.Point(0, 85)
        Me.Browser.Name = "Browser"
        Me.Browser.Size = New System.Drawing.Size(706, 277)
        Me.Browser.TabIndex = 4
        Me.Browser.Visible = True

E prima lo ho dichiarato:
Public WithEvents Browser As New GeckoWebBrowser

Ma non funziona comunque: stesso errore.

Grazie Walker93 e HeDo per la risposta =)
Ultima modifica effettuata da 19/02/11 7:16