[Debutant] Créer un Web browser + Historique + favoris

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

zehaha

Membre actif
Nov 28, 2010
347
0
752
Sur mon canapé
//A noter que j'ai déjà poster ça sur argoemu.azok.org, il y a quelques jours, ce tuto est bel et bien de moi.

Alors, dans ce tuto par moi même, je vais vous apprendre à créé un Web Browser, d'abords très simple, puis je conplexifierais. Celui que j'avais fais il y a quelques mois était à peu près à la fin de la partie "Simple", j'avance donc avec vous :)

Lisez les explications, ne leechez pas bêtement! (Vu que je vais peut etre l'utiliser ou faire une release, je met un design qui me plait, ça ne change rien à part le graphique)
Comme le projet est fait en plusieur parties, je vais utiliser des #Region , vous n'etes pas obligé de faire de même.

Le niveau pour comprendre et reproduire ceci est débutant.

I) Un browser basique

1)Définir les besoins:

De quels contrôles avez vous besoin?
-Un toolstripboutton pour revenir en arriere: Bback
-un toolstripboutton pour aller après: Bforward
-un toolstripboutton pour lancer l'addresse: Bgo
-un toolstripboutton pour actualiser la page: Brefresh
-un toolstripboutton pour arreter la recherche de la page en cour: Bstop
-Un toolstripboutton pour aller à la page d'accueil : Bhome
-Un webbrowser: Browser1
-un toolstriptextbox :Turl
-Bien sur, mettez un toolstripcontainer, on ne change pas les noms, ça ne sert à rien.

2)Commencer le code des fonctions de bases:
je vous laisse réfléchir, utilisez l'IDE de VB pour savoir quoi mettre ;)

Bon, allez, je suis pas sadique (quoi que)

-On commence par mettre l'url du webbrowser sur Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! (via la partie graphique)
-on passe aux chose sérieuses: premier #Region pour y mettre les controles placés précédement! Je l'appelle "Tools"
-on met les commandes pour chaque boutton:
Code:
Public Class Form1
#Region "Tools"

    Private Sub Bback_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bback.Click
        Me.Browser1.GoBack()
    End Sub

    Private Sub Bforward_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bforward.Click
        Me.Browser1.GoForward()
    End Sub

    Private Sub Bgo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bgo.Click
        Me.Browser1.Navigate(Turl.Text)
    End Sub

    Private Sub Bstop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bstop.Click
        Me.Browser1.Stop()
    End Sub

    Private Sub Bhome_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bhome.Click
        Me.Browser1.GoHome()
    End Sub

    Private Sub Brefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Brefresh.Click
        Me.Browser1.Refresh()
    End Sub
#End Region

End Class
Tout marche sans les Me. , mais c'est une habitude à prendre pour la suite! (J'dis ça, mais je le fais jamais :/ )

je dois avouer que j'ai lu le tuto sur le SDZ (après avoir fait mon browser perso), et contrairement à eux, je ne vois pas l'interet de mettre un menu juste pour fermer. Ca prend de la place inutile. On vera peut etre plus tard pour d'autres fonctions :)

Là, vous devez pouvoir naviguer de manière basique.


3)Quelques fonctions basiques "d'ergonomie"
Ici, on ajoute juste 2/3 trucs tout bêtes pour s'adapter à la page et aux actions de l'utilisateur:

On va ajouter une autre toolbarre en bas, pour avoir le statut de la page...
On ajoute donc Lstat

on commence par le Form1_Load
Code:
#Region "ToolChange"
'Pas de possibilité d'avancer/reculer/stoper au démarage
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Bback.Enabled = False
        Me.Bforward.Enabled = False
        Me.Bstop.Enabled = False
    End Sub

Et on enchaine sur la navigation

Code:
Private Sub Browser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles Browser1.DocumentCompleted
        'Stop est déactivé (le chargement est fini), on remet Lstat à jour.
        Me.Lstat.Text = Browser1.StatusText
        Me.Bstop.Enabled = False
        'on affiche l'URL
        Me.Turl.Text = Me.Browser1.Url.ToString
    End Sub

    'on lance le chargement de la page
    Private Sub Browser1_Navigating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles Browser1.Navigating
        'Le bouton stop peut etre activé
        Me.Bstop.Enabled = True
        'les stats sont rechargées
        Me.Lstat.Text = Browser1.StatusText
        'En premier le Bforward
        If Me.Browser1.CanGoForward Then
            Me.Bforward.Enabled = True
        Else
            Me.Bforward.Enabled = False
        End If
        'Et exactement pareil avec Bback
        If Me.Browser1.CanGoBack Then
            Me.Bback.Enabled = True
        Else
            Me.Bback.Enabled = False
        End If
    End Sub
#End Region

Wow! Ca commence à ressembler à quelque chose! Mais il me semble que mon browser habituel fait mieux... Oui, mais en quoi? Réponse juste après!


II) Ajout des fonctions plus avancées

1) Et si on ajoutait un systeme de favoris?

Bon, je vous laisse chercher (interdit de regarder sur le net!) j'ai réussis seul après de longues heures (bon, OK, je pianotais plus sur mon iPod :p )

Donc, ça donne

On ajoute le toolstripmenu Favoris dans le menu en haut
Et un toolstripbuton : Bfav
Dans #Region "Favoris"
Dans Bfav.click
Code:
Private Sub Bfav_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bfav.Click
        Dim fav As New ToolStripMenuItem
        fav.Text = Browser1.DocumentTitle
        fav.Tag = Browser1.Url.ToString
        AddHandler fav.Click, AddressOf fav_click
        FavorisToolStripMenuItem.DropDownItems.Add(fav)
    End Sub
Et en dessous:
Code:
private sub fav_click (ByVal sender As ToolStripMenuItem, ByVal byvale as System.EventArgs)
Browser1.navigate (sender.tag)
End Sub

Testez ça :)

2) Wow, ça avance... Mais pourquoi pas un historique?!

Alors, on pousse encore plus loin *Vers l'infini...Et au de là!"

Commencez par aller dans MyProject dans l'explorateur de solution;
Trouvez l'onglet paramètres
Entrez dans nom: History
Type: System.Collections.Specialized.StringCollection.
Laisser utilisateur
Entre des lettes aux hasard à coté puis valideer ce champs, ensuite supprimez ce que vous avez mis. (le tout en passant par le boutton sur le cote)

Retournez dans Form1.vb:

Retrouvez le sub
Private Sub Browser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles Browser1.DocumentCompleted
on l'avais mis au début dans #Region ToolChange

ajoutez:
Code:
'Pour l'historique
        If My.Settings.History.Count > 0 Then
            If Not My.Settings.History.Item(My.Settings.History.Count - 1) = Browser1.Url.ToString Then
                My.Settings.History.Add(Browser1.Url.ToString)
            End If
        Else
            My.Settings.History.Add(Browser1.Url.ToString)
        End If

Ensuite on ajoute une Form
Dedans on met une listBox et un boutton (en dessous)
On met text du boutton "supprimer" : Bsuppr

Dans Form2.vb, nous allons entrer du code:

Code:
Public Class Form2

    #Region "Historique"
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Updatelist()
    End Sub

    Friend Sub Updatelist()
        If My.Settings.History.Count > 0 Then
            For Each historyitem In My.Settings.History
                ListBox1.Items.Add(historyitem)
            Next
        End If
    End Sub

    Private Sub Bsuppr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bsuppr.Click
        ListBox1.Items.Clear()
    End Sub

#End Region

End Class

C'est pas fini!
on reviens dans form1.vb

Dans notre Private Sub Browser1_DocumentCompleted
Code:
Form2.Updatelist()
on ajoute ensuite le code suivant dans une nouvelle région (c'est plus classe:p )

Code:
#Region "Historique"
    Private Sub Bhisto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bhisto.Click
        Form2.Show()
    End Sub
#End Region

On test... Et ça marche!



D'autres fonctions peut etre bientôt!

A noter que les favoris ne s'enregistre pas d'une navigation à l'autre :/
Pensez à customiser vos bouttons et tout :)


Hope this helps
 
Last edited:

[M]assiwissa

75017KG
V.I.P
V
Jun 12, 2011
2,792
0
942
moi j'ai onglet, Sinon gg pour les débutant je te met 9/10 pour ton tuto ( il manque des image pour les vrai zero )
 
Last edited: