Meilleur auteur de réponses
Position en temps réel de la ScrollBar dans WebBrowser

Question
-
Bonjour,
j'aimerais avoir deux label text, un pour la position des X et un pour la position des Y. Ces labels devrons afficher en temps réel la position des scrollbar. Je voudrais a chaque fois que la scrollbar change que ce code s'exécute.
Dim htmlDoc As HtmlDocument = WebBrowser1.Document Dim ScrollX As Integer, ScrollY As Integer Dim MaxX As Integer, MaxY As Integer With htmlDoc.GetElementsByTagName("HTML")(0) ' Sauve la position ScrollX = .ScrollLeft ScrollY = .ScrollTop() ' Cherche la taille maxi .ScrollLeft = 100000 .ScrollTop = 100000 MaxX = .ScrollLeft MaxY = .ScrollTop ' Restaure la position .ScrollLeft = ScrollX .ScrollTop = ScrollY Label1.Text = "X " & ScrollX Label2.Text = "Y " & ScrollY End With
Ce code ne peut pas ce mettre dan un timer car a chaque fois qu'il est exécuté la page web tremble.
Réponses
-
Les "flash" se produisant dans la page Web doivent, je pense, provenir de la recherche de la taille de la page.Tu peux essayer de scinder le code en deux parties :
Public Class Form1 Dim MaxX As Integer, MaxY As Integer Dim htmlDoc As HtmlDocument Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick With htmlDoc.GetElementsByTagName("HTML")(0) Label1.Text = (.ScrollLeft() & "/" & MaxX & " - " & .ScrollTop() & "/" & MaxY) End With End Sub Private Sub WebBrowser1_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted Dim ScrollX As Integer, ScrollY As Integer htmlDoc = WebBrowser1.Document With htmlDoc.GetElementsByTagName("HTML")(0) ' Sauve la position ScrollX = .ScrollLeft() ScrollY = .ScrollTop() ' Cherche la taille maxi (doit y avoir mieux) .ScrollLeft = 100000 .ScrollTop = 100000 MaxX = .ScrollLeft MaxY = .ScrollTop ' Restaure la position .ScrollLeft = ScrollX .ScrollTop = ScrollY End With End Sub End Class
Je suis resté sur l'utilisation d'un Timer, car je ne vois pas d'évènement lié au Scroll dans un WebBrowser.
Cordialement, Jacques
Toutes les réponses
-
Les "flash" se produisant dans la page Web doivent, je pense, provenir de la recherche de la taille de la page.Tu peux essayer de scinder le code en deux parties :
Public Class Form1 Dim MaxX As Integer, MaxY As Integer Dim htmlDoc As HtmlDocument Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick With htmlDoc.GetElementsByTagName("HTML")(0) Label1.Text = (.ScrollLeft() & "/" & MaxX & " - " & .ScrollTop() & "/" & MaxY) End With End Sub Private Sub WebBrowser1_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted Dim ScrollX As Integer, ScrollY As Integer htmlDoc = WebBrowser1.Document With htmlDoc.GetElementsByTagName("HTML")(0) ' Sauve la position ScrollX = .ScrollLeft() ScrollY = .ScrollTop() ' Cherche la taille maxi (doit y avoir mieux) .ScrollLeft = 100000 .ScrollTop = 100000 MaxX = .ScrollLeft MaxY = .ScrollTop ' Restaure la position .ScrollLeft = ScrollX .ScrollTop = ScrollY End With End Sub End Class
Je suis resté sur l'utilisation d'un Timer, car je ne vois pas d'évènement lié au Scroll dans un WebBrowser.
Cordialement, Jacques
-