Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Application.Run da BackgroundWorker
Forum - C# / VB.NET - Application.Run da BackgroundWorker

Avatar
Xaero (Normal User)
Rookie


Messaggi: 34
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 20:48
Mercoledì, 02/02/2011
Salve, all'interno di una classe ho dichiarato un webbrowser in questo modo:
    Public Shared WithEvents Webbrowser1 As New System.Windows.Forms.WebBrowser

Poi nella sub main faccio partire un backgroundworker che controlla se all'interno delle pagine caricate dal webbrowser (di cui altri metodi lanciati dalla sub main si avvalgono per fare dei controlli su internet) è presente una parola, ed in caso carica il form con il webbrowser.

Codice sorgente - presumibilmente VB.NET

  1. Private Shared Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  2.  
  3.         Dim testo As String = LCase(Webbrowser1.Document.Body.InnerHtml)
  4.         Do While InStr(testo, cerca) <> 0
  5.             testo = LCase(Webbrowser1.Document.Body.InnerHtml)
  6.             Application.DoEvents()
  7.             System.Threading.Thread.Sleep(200)
  8.         Loop
  9.         Dim frm As New Form()
  10.         frm.Visible = True
  11.         frm.Controls.Add(Webbrowser1)
  12.         frm.Controls(0).Visible = True
  13.         frm.Controls(0).Dock = DockStyle.Fill
  14.         Application.Run(frm)
  15. end sub



Ma quando si carica il form, quest'ultimo è vuoto. Non c'è nessun webbrowser aggiunto all'inteno. Come posso fare per visualizzarlo?


Esistono solo 10 tipi di persone:

Chi conosce il codice binario... e chi no.
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2764
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 20:51
Mercoledì, 02/02/2011

da quanto si apre un nuovo form con application.run?
mah...

basta creare un nuovo form e aggiungerlo al progetto, da codice poi fai

nuovoform newForm = new nuovoform();

newForm.Show();


Uso l'Application.Run poiché l'applicazione ancora non l'ho fatta partire. Vorrei farla partire da dentro il backgroundworker, ma non si vede il webbrowser al suo interno. - Xaero - 02/02/11 21:04


Ingegnere Informatico
https://ldlagency.it
PM
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:58
Giovedì, 03/02/2011
Secondo me hai le idee confuse...
in ogni caso per visualizzare il webbrowser devi aggiungerlo alla form e mostrare la form
Codice sorgente - presumibilmente Plain Text

  1. Form1.Controls.Add(WebBrowser1)
  2. Form1.Show


Ma se inserisco questo codice all'interno del BackgroundWorker1_DoWork, carica un form, ma quest'ultimo è vuoto. Non si vede nessun webbrowser, se pur nella classe sia dichiarato come public shared. - Xaero - 06/02/11 08:44


Il software è come il sesso, è meglio quando è libero.
Linus Torvalds, Conferenza della Free Software Foundation, 1996 (attribuito)

Non provare mai a spiegare il computer a un profano. È più facile spiegare il sesso a una vergine.
Robert Anson Heinle
PM