Bon, je ne sais pas si vous avez prêtés attention à tous les évènements que nous offre ce petit
webbrowser ...
En voici quelques uns qui vont nous être fort utiles :
- Handles WB_NAVIGATEUR.StatusTextChanged
- Handles WB_NAVIGATEUR.CanGoBackChanged
- Handles WB_NAVIGATEUR.CanGoForwardChanged
- Handles WB_NAVIGATEUR.ProgressChanged
Nous allons donc abondamment,
fortement, exponentiellement, utiliser le petit "e", vous vous souvenez, ce petit argument dont j'ai parlé il y a quelques chapitres. Eh bien on va désormais l'utiliser.Il correspond à un objet qui va nous être utile, cet objet correspondra à différentes choses suivant le
handles : par exemple pour le
handles ProgressChanged il pourra nous fournir l'état d'avancement de la page, pour le cas du
statustextchanged, le texte de statut, ainsi de suite ...
Améliorons notre navigateur en nous servant de ces évènements pour activer / désactiver les boutons précédent, suivant en fonction de la possibilité ou non d'avancer ou reculer dans l'historique, de mettre une barre de progression, un texte de progression, etc ...
Ce qui nous donne pour seulement, la gestion des évènements du navigateur :
Code : VB.NET 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 | #Region "Evènements du WBroser"
'a chaque changement d'état, on met à jour les boutons
Sub WB_NAVIGATEUR_CanGoForwardChanged(ByVal sender As Object, ByVal e As EventArgs) Handles WB_NAVIGATEUR.CanGoForwardChanged
If Me.WB_NAVIGATEUR.CanGoForward Then
Me.BT_SUIVANT.Enabled = True
Else
Me.BT_SUIVANT.Enabled = False
End If
End Sub
'a chaque changement d'état, on met à jour les boutons
Sub WB_NAVIGATEUR_CanGoBackChanged(ByVal sender As Object, ByVal e As EventArgs) Handles WB_NAVIGATEUR.CanGoBackChanged
If Me.WB_NAVIGATEUR.CanGoBack Then
Me.BT_PRECEDENT.Enabled = True
Else
Me.BT_PRECEDENT.Enabled = False
End If
End Sub
'Au changement de statut de la page
Sub WB_NAVIGATEUR_StatutTextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles WB_NAVIGATEUR.StatusTextChanged
'On met le statut à jour
Me.LBL_STATUT.Text = WB_NAVIGATEUR.StatusText
End Sub
'Au changement de progression de la page
Sub WB_NAVIGATEUR_ProgressChanged(ByVal sender As Object, ByVal e As WebBrowserProgressChangedEventArgs) Handles WB_NAVIGATEUR.ProgressChanged
Me.PGB_STATUT.Maximum = e.MaximumProgress
Me.PGB_STATUT.Value = e.CurrentProgress
End Sub
'Lorsque le chargement est fini
Private Sub WB_NAVIGATEUR_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WB_NAVIGATEUR.DocumentCompleted
'desactive le BT stop
Me.BT_STOP.Enabled = False
'On cache la barre de progression
Me.PGB_STATUT.Visible = False
'on récupère l'adresse de la page et on l'affiche
Me.TXT_ADRESSE.Text = Me.WB_NAVIGATEUR.Url.ToString
End Sub
'Lorsque le chargement commence
Private Sub WB_NAVIGATEUR_Navigating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WB_NAVIGATEUR.Navigating
'On active le bouton stop
Me.BT_STOP.Enabled = True
'au début du chargement, on affiche la barre de progression
Me.PGB_STATUT.Visible = True
End Sub
#End Region
|
Bon, ce code, si vous avez pris la peine d'essayer de le comprendre fait ce que j'ai dit plus haut en s'aidant du "e" dans un cas pour l'instant : faire avancer la
progressbar.
Alors comment ais-je fais pour réaliser cette prouesse xD !
Eh bien si vous avez tapé
"e." (dans l'évènement du changement de progression), notre ide nous fournit les fonctions, objets, propriétés pouvant être utilisées.
Vous voyez 2 lignes qui s'écartent du lot :
- CurrentProgress
- MaximumProgress
En mettant le curseur dessus votre ide nous explique que ces valeurs renvoient chacune un long (donc un nombre que nous allons pouvoir exploiter) mais à quoi correspond-il ? Eh bien la réponse est déjà grandement fournie dans le nom

mais bon, en dessous c'est marqué : le
maximumprogress nous renvoie le nombre de
bytes a télécharger pour avoir la page et le
currentprogress, le nombre de
bytes actuellement téléchargés.
Ensuite, il ne faut pas sortir de St-Cyr pour savoir ce qu'il faut faire : on attribue le nombre de bytes a télécharger en tant que maximum pour la
progressbar, et on met comme valeur le nombre de bytes actuellement téléchargés.
Et on obtient notre premier évènement dans lequel on exploite les arguments transmis par "
e".
Euh, quand j'ai voulu copier-coller la ligne :
Code : VB.NET | Sub WB_NAVIGATEUR_StatutTextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles WB_NAVIGATEUR.StatusTextChanged
|
et remplacer StatusTextChanged par ProgressChanged une erreur inconnue au bataillon est apparue ...
Alors, c'est normal : certains évènements utiliseront, comme ici
e as EventArgs (ou
system.EventArgs), alors que d'autres utiliseront des
e de type spécifique :
WebBrowserProgressChangedEventArgs (dans le cas du
handles progresschanged). Et c'est également pour cette raison que dans certains évènements de propriétés supplémentaires s'offriront à notre "
e", simplement car celui-ci n'est pas du même type ...
Bon, cette partie est très importante car ce petit
e sera utilisé très souvent dans vos programmes, lorsque vous allez réagir avec des objets, c'est ce
e qui gèrera les retours d'évènements.