Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WPF: il controllo WebBrowser con Visual Basic 2008

.NET Framework 3.5 Service Pack 1 ha introdotto in Windows Presentation Foundation, tra le varie novità, un controllo WebBrowser molto simile a quello che utilizzavamo in Windows Forms e che ci permette di visualizzare pagine Web, documenti HTML e quanto già potevamo fare in precedenza.

 

Il suo utilizzo è molto semplice e lo vediamo in questo post, per la cui demo ho utilizzato Microsoft Visual Basic 2008 Express Edition. Dopo aver creato una nuova applicazione WPF, ci proponiamo di realizzare una semplice interfaccia grafica, costituita dagli elementi basilari di un browser Web. Prima di mostrare il codice, vediamo come si presenterà il designer dopo la predisposizione dell’interfaccia:

 

 

 

La suddetta interfaccia è stata predisposta scrivendo il seguente, semplicissimo XAML che ormai conoscete bene:

 

    <Grid>

        <Grid.RowDefinitions>

            <RowDefinition Height="50"/>

            <RowDefinition/>

            <RowDefinition Height="20"/>

        </Grid.RowDefinitions>

 

        <!--Controlli di navigazione-->

        <Border Grid.Row="0" BorderBrush="Navy" BorderThickness="1">

            <StackPanel Orientation="Horizontal">

                <Button Width="80" Height="30" Content="Back" Margin="5" Name="BackButton" />

                <Button Width="80" Height="30" Content="Next" Margin="5" Name="NextButton" />

                <TextBox Name="AddressTextBox" Margin="5" Width="200" Height="30"/>

                <Button Width="50" Height="30" Content="Go" Margin="5" Name="GoButton" />

                <Button Width="50" Height="30" Content="Refresh" Margin="5" Name="RefreshButton" />

            </StackPanel>

 

        </Border>

       

        <!--Il nuovo controllo WebBrowser si dichiara come gli altri

            e per utilizzarlo da codice è sufficiente assegnargli un nome-->

        <WebBrowser Grid.Row="1" Name="Web1"/>

       

        <TextBlock Grid.Row="2" Name="StatusText" Text="Ready" />

    </Grid>

 

Come vedete, abbiamo dichiarato un oggetto WebBrowser che costituisce il controllo di nostro interesse, senza aggiungere alcun ulteriore riferimento. Passiamo ora al code-behind, per scrivere un po’ di codice Visual Basic.

Possiamo scrivere per prima cosa i gestori di evento Click per ciascun pulsante e, come potete vedere, i metodi del controllo WebBrowser sono molto intuitivi:

 

    'Click sul pulsante "Go"

    Private Sub GoButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles GoButton.Click

 

        'Se la casella di testo non è vuota, apre il sito

        If Not String.IsNullOrEmpty(Me.AddressTextBox.Text) Then

            Me.Web1.Navigate(New Uri(Me.AddressTextBox.Text))

        End If

 

    End Sub

 

    'Click sul pulsante "Back", per tornare alla pagina precedente

    Private Sub BackButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles BackButton.Click

        Me.Web1.GoBack()

    End Sub

 

    'Click sul pulsante "Next", per andare alla pagina successiva

    Private Sub NextButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles NextButton.Click

        Me.Web1.GoForward()

    End Sub

 

    'Click sul pulsante "Refresh", per ricaricare la pagina

    Private Sub RefreshButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles RefreshButton.Click

        Me.Web1.Refresh()

    End Sub

 

Aggiungiamo ora una “finezza”, facendo sì che l’utente sia in grado di lanciare l’apertura del sito premendo anche Invio nella casella di testo, gestendo il relativo evento KeyUp:

 

    Private Sub AddressTextBox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles AddressTextBox.KeyUp

 

        If e.Key = Key.Enter Then

            GoButton.RaiseEvent(New System.Windows.RoutedEventArgs(Button.ClickEvent))

        End If

    End Sub

 

Questo è un modo abbastanza rapido per scatenare l’evento Click di un pulsante WPF, ma ce ne sono di più completi (e validi). Ora, supponiamo che all’apertura del sito vogliamo mostrare un messaggio all’utente e modificare il titolo della finestra affinchè riporti l’Uri del sito corrente. Il controllo WebBrowser espone alcuni eventi, tra cui il Navigated che ci permette di ricevere alcune informazioni. Innanzitutto, modifichiamo il costruttore come segue:

 

    Public Sub New()

 

        ' This call is required by the Windows Form Designer.

        InitializeComponent()

 

        ' Add any initialization after the InitializeComponent() call.

        AddHandler Web1.Navigated, AddressOf Web1_Navigated

    End Sub

 

Quindi aggiungiamo il nostro gestore:

 

    Private Sub Web1_Navigated(ByVal sender As Object, ByVal e As NavigationEventArgs)

        Me.StatusText.Text = "Website found"

 

        Me.Title = e.Uri.ToString

    End Sub

 

Ora proviamo ad avviare l’applicazione ed a digitare l’URL di un sito Internet. La figura seguente mostra un esempio del risultato ottenuto:

 

Chiaramente l’infrastruttura di un browser Web reale è molto più complessa, in ogni caso abbiamo visto come sia possibile utilizzare in modo semplice il nuovo controllo WebBrowser. Potreste anche utilizzarlo per visualizzare un contenuto compatibile e memorizzato in locale, utilizzando il protocollo file://.

 

Il codice sorgente a corredo del post è disponibile a questo indirizzo dell’area Download di Visual Basic Tips & Tricks.

 

Alessandro

Print | posted on giovedì 5 febbraio 2009 19:21 | Filed Under [ Visual Basic Windows Presentation Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET