J'utilise un document HTML pour afficher la sortie de texte dans mon application - cela me donne la flexibilité du HTML et la puissance du CSS, et je peux publier le HTML généré comme un fichier journal ouvrable dans n'importe quel navigateur. Lorsque de nouvelles informations sont disponibles, je mets à jour le fichier HTML, puis j'appelle Refresh() sur mon contrôle WebBrowser. Naturellement, je veux que l'utilisateur voie les informations les plus récentes sans avoir à défiler manuellement vers le bas, alors Je dois faire défiler automatiquement vers le bas du document après le navigateur actualise et les changements ont été rendus.Comment faire défiler automatiquement vers le bas d'un document HTML chargé dans un WebBrowser ou un cadre?
J'ai le code pour faire défiler vers le bas:
(this.browser.Document as HTMLDocument).body.scrollIntoView(false);
Le problème est que j'ai essayé beaucoup d'événements, et tous le feu avant que le contrôle du navigateur Web a effectivement fini rendu la source mise à jour, donc je finis par défiler vers le bas avant que le nouveau contenu ne soit affiché! C'est incroyablement frustrant - est-ce que quelqu'un sait comment résoudre ce problème? Comment puis-je savoir quand le nouveau contenu est complètement terminé pour que je puisse défiler vers le bas?
EDIT: J'ai essayé enfermer un cadre dans un ScrollViewer:
<ScrollViewer x:Name="scrollBar" Grid.Row="1" Grid.Column="0">
<Frame Name="browserBox" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" NavigationUIVisibility="Hidden"/>
</ScrollViewer>
Cela fonctionne très bien pour les pages d'application (page de classe), car le cadre pousse assez grand pour la page entière, ce qui provoque l'ScrollViewer enfermant à Ajuster et déclencher un événement ScrollChanged. J'ai été momentanément très excité, mais j'ai découvert que malheureusement, quand je charge un fichier HTML dans le cadre, le cadre ne se redimensionne pas pour s'adapter au contenu, mais présente sa propre barre de défilement, maintenant j'ai une barre de défilement à l'intérieur d'un autre, et je ne peux pas m'abonner à des événements pour la barre de défilement interne. ! :(