IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C# 4.52] WebBrowser Scroll position [Débutant]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Par défaut [C# 4.52] WebBrowser Scroll position
    Bonjour,

    Je travaille sur un configurateur.
    Je charge un document XML dans un WebBrowser.
    Si l'utilisateur utilise la scroll bar et que je mets à jour le document, je voudrais que la scrollbar reprenne la même position.
    Je sais le faire avec un document HTML mais il n'y a pas de body lorsqu'on affiche un XML.
    Je ne comprends pas que l'on ne puisse pas accéder à la propriété scroll quelque soit le document chargé.
    En plus, l'affichage d'un document XML dans le navigateur est (sauf erreur de ma part) le résultat d'une transformation XSL (masquée).

    J'ai le sentiment qu'il faut trouver la valeur en passant par le hwnd car avec ce qu'on trouve sur le net pour le html ça ne fonctionne pas.

    Vous pourriez m'aider pour le faire en C# j'ai trouvé des pistes mais en C++ et je ne connais pas bien les truc pour naviguer dans les objets de l'écran à partir d'une référence c# d'un contrôle.

    D'avance merci

  2. #2
    Membre éclairé Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Par défaut
    Salut,

    J'ai trouvé une piste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            [DllImport("user32.dll")]
            static extern int SetScrollPos(IntPtr hWnd, int nBar,
                            int nPos, bool bRedraw);
            [DllImport("user32.dll")]
            public static extern int GetScrollPos(IntPtr hwnd, int nBar);
    Malheureusement, je n'arrive pas à m'en servir.

    J'ai essayé ça sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                        int scrollPos = GetScrollPos(this.WebConfigWebBrowser.Handle, 0);
                        WebBrowser1.DocumentStream = MyDoc.DocumentStream;
                        SetScrollPos(this.WebConfigWebBrowser.Handle, 0, scrollPos, true);

    Please... Help...

  3. #3
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Il faut utilisé les propriété de webbrowser pour mémoirisé la position a voir:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     panel1.VerticalScroll.Maximum;
                panel1.VerticalScroll.Minimum;
                panel1.VerticalScroll.Value;

  4. #4
    Membre éclairé Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Par défaut
    Salut,

    Merci de ta réponse mais si ces propriétés existent, elles ne sont pas publiques.

    Cordialement.

  5. #5
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    il faut récupérer ta position
    ensuite renvoyer le scroll a ta position enregistrer
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    webBrowser1.Document.Window.ScrollTo(0, 200);

    More info
    http://msdn2.microsoft.com/en-us/lib...ll(VS.80).aspx
    http://msdn2.microsoft.com/en-us/lib...ll(VS.80).aspx
    http://msdn2.microsoft.com/en-us/lib...tmlwindow.aspx

  6. #6
    Membre éclairé Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Par défaut
    Re

    Merci mais j'ai toujours le problème de récupérer la valeur du scroll avant le refresh du document pour pouvoir la setter ensuite.
    Il semble que lorsqu'on a un doc XML, on ne puisse pas récupérer cette valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            private void WB_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                WB.Document.Window.AttachEventHandler("onscroll", OnWBScrollEventHandler);
            }
     
            public void OnWBScrollEventHandler(object sender, EventArgs e)
            {
                WBScrollTop = getYoffset(WB.Document.All[0]);
            }
    retourne toujours 0 j'ai essayé d'incrémenter l'index de All mais c'est toujours 0...

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/11/2011, 13h14
  2. scroll position d'une textarea
    Par ____22 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/09/2011, 15h27
  3. [Scrolling] Position (pourcentage) de scrolling?
    Par themoye dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 22/03/2010, 15h31
  4. WebBrowser + Scrolling
    Par tintin22 dans le forum Delphi
    Réponses: 2
    Dernier message: 22/10/2006, 11h22
  5. [MFC] Ceditview scroll position
    Par foxblue dans le forum MFC
    Réponses: 5
    Dernier message: 09/09/2005, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo