Guida al Visual Basic .NET
Capitolo 79° - Il controllo WebBrowser
WebBrowser è uno dei controlli standard forniti dal Framework .NET fin dalla versione 1.0, e le sue potenzialità sono abbastanza
elevate da permetterci di "creare" (o quanto meno, simulare) un nostro personale web browser, come Mozilla FireFox, Opera o Google Chrome.
Non a caso ho messo tra virgolette il verbo creare, poiché il controllo che andremo ad analizzare tra poco assolve un'unica
funzione, che costituisce, però, il fulcro di tutta la navigazione. La fisionomia di WebBrowser
Dopo aver creato un nuovo progetto Windows Forms, trascinate sulla superficie del designer un nuovo controllo WebBrowser. Una volta posizionato dovrebbe mostrarsi come un'area totalmente bianca: per ora, infatti, non contiene ancora nessuna pagina. Prima di procedere, ecco uno sguardo alla lista dei suoi membri più importanti:
Alcune delle funzionalità esposte da questi membri si reggono pesantemente su Internet Explorer, come ad esempio la visualizzazione
dell'anteprima o la ricerca della home page (che potete cambiare solo dal menù opzioni di IE). Nonostante tali pesanti impedimenti,
è possibile usare il controllo con semplicità.
Public Class Form1 Private Sub txtUrl_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtUrl.KeyDown 'Quando si preme invio durante la digitazione, naviga 'alla pagina indicata If e.KeyCode = Keys.Enter Then wbBrowser.Navigate(txtUrl.Text) 'Poiché si inizia a navigare, è lecito fermare 'il caricamento, quindi attiva btnCancel btnCancel.Enabled = True End If End Sub Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click 'Ferma l'attività del WebBrowser wbBrowser.Stop() btnCancel.Enabled = False btnRefresh.Enabled = True End Sub Private Sub wbBrowser_Navigating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles wbBrowser.Navigating 'L'evento Navigating si genera prima della navigazione btnCancel.Enabled = True End Sub Private Sub wbBrowser_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles wbBrowser.DocumentCompleted 'L'evento DocumentCompleted si verifica quando una pagina 'è stata completamente caricata. Se anche una sola 'delle parti della pagina non è completa, l'evento 'non viene generato. Per evitare brutte soprese, potete 'utilizzare l'evento Navigated, che si verifica dopo la 'navigazione (indipendentemente dal successo o meno 'dell'operazione) btnCancel.Enabled = False btnBack.Enabled = wbBrowser.CanGoBack btnForward.Enabled = wbBrowser.CanGoForward btnRefresh.Enabled = True End Sub Private Sub btnRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRefresh.Click wbBrowser.Refresh() End Sub Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click wbBrowser.GoBack() End Sub Private Sub btnForward_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnForward.Click wbBrowser.GoForward() End Sub End Class Come alternativa a DocumentCompleted, si può utilizzare Navigated: Private Sub wbBrowser_Navigated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles wbBrowser.Navigated btnCancel.Enabled = False btnBack.Enabled = wbBrowser.CanGoBack btnForward.Enabled = wbBrowser.CanGoForward btnRefresh.Enabled = True End Sub Possiamo ora aggiungere una barra di stato in basso per comunicare lo stato della navigazione: Public Class Form1 Private Sub txtUrl_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtUrl.KeyDown If e.KeyCode = Keys.Enter Then wbBrowser.Navigate(txtUrl.Text) btnCancel.Enabled = True End If End Sub Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click wbBrowser.Stop() btnCancel.Enabled = False btnRefresh.Enabled = True End Sub Private Sub wbBrowser_Navigating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles wbBrowser.Navigating btnCancel.Enabled = True 'La proprietà StatusText contiene in forma leggibile 'un resoconto dell'operazione che il controllo sta svolgendo lblStatus.Text = wbBrowser.StatusText End Sub Private Sub wbBrowser_Navigated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles wbBrowser.Navigated btnCancel.Enabled = False btnBack.Enabled = wbBrowser.CanGoBack btnForward.Enabled = wbBrowser.CanGoForward btnRefresh.Enabled = True lblStatus.Text = "Pagina caricata" End Sub Private Sub btnRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRefresh.Click wbBrowser.Refresh() End Sub Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click wbBrowser.GoBack() End Sub Private Sub btnForward_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnForward.Click wbBrowser.GoForward() End Sub Private Sub wbBrowser_ProgressChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles wbBrowser.ProgressChanged prgProgress.Value = e.CurrentProgress / e.MaximumProgress * 100 lblStatus.Text = wbBrowser.StatusText End Sub End Class
C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...
|