none
Position en temps réel de la ScrollBar dans WebBrowser RRS feed

  • 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.

    samedi 4 mai 2013 14:42

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


    • Modifié Jacques93 dimanche 5 mai 2013 11:54
    • Marqué comme réponse sam333322 dimanche 5 mai 2013 13:23
    dimanche 5 mai 2013 11:47

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


    • Modifié Jacques93 dimanche 5 mai 2013 11:54
    • Marqué comme réponse sam333322 dimanche 5 mai 2013 13:23
    dimanche 5 mai 2013 11:47
  • merci, c'est niquel
    dimanche 5 mai 2013 13:24