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

  1. #1
    Membre habitué 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
    Points : 144
    Points
    144
    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 habitué 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
    Points : 144
    Points
    144
    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 expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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
    Points : 1 454
    Points
    1 454
    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 habitué 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
    Points : 144
    Points
    144
    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 expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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
    Points : 1 454
    Points
    1 454
    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 habitué 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
    Points : 144
    Points
    144
    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

  7. #7
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    essaye ça pour récupéré la position

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop

  8. #8
    Membre habitué 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
    Points : 144
    Points
    144
    Par défaut
    J'ai déjà essayé, il n'y a pas d'HTML lorsque tu charges un XML. C'est une sorte de transformation XSL interne.
    J'ai aussi essayé de convertir le XML en HTML mais ça complique pas mal car après il faut re transformer en XML.

  9. #9
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    Comment il y a pas de HTML? tu doit mettre le TagName de ton composant
    Autrement
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    webBrowser1.Document.GetElementsByTagName("TagNameBrowser")[0].ScrollTop

  10. #10
    Membre habitué 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
    Points : 144
    Points
    144
    Par défaut
    Désolé ne ne pas avoir le nombre de neurones requis mais je ne vois pas ce que tu veux dire par composant...

    Si tu regardes la source du document tu as ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="utf-8"?>
    <!--
      For more information on how to configure your ASP.NET application, please visit
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <configSections>
    ...
      </configSections>
    <configuration>
    Dans ton exemple j'ai remplacé TagNameBrowser par ?xml, jobtiens quelque chose mais le scroll est toujours à 0.
    idem avec configuration

    Merci

  11. #11
    Membre habitué 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
    Points : 144
    Points
    144
    Par défaut Voie abandonnée
    Bonjour,

    Finalement, j'ai trop galéré avec ce contrôle (que je considère comme très mal développé). J'ai abandonné son utilisation au profit d'une Ritch Text Box.
    En plus de ces problèmes de maîtrise du comportement des Scroll bars lorsqu'on manipule de l'XML, il y avait des gros problèmes de rafraîchissement.
    J'ai ajouté la coloration en RTF du code XML que j'ai trouvé sur internet.
    Ca fonctionne nikel.

    Donc, je déconseille l'utilisation du WebBrowser pour l'XML. C'est pas fait pour ça, même si internet explorer permet d'afficher de l'XML à peu près correctement.

    Bonne journée

+ 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