Question

Je suis en train de travailler sur une simple application de chat à l'aide d'un Système.De Windows.Les formulaires.Contrôle WebBrowser pour afficher les messages entre l'utilisateur et le destinataire.Comment puis-je obtenir le contrôle automatiquement défiler vers le bas chaque fois que j'ai mise à jour de la DocumentText du contrôle?

Était-ce utile?

La solution

Merci les gars -- j'ai voté à vous deux mais aucun des deux ne pourrait fonctionner pour ma situation.Ce que j'ai fait a été

webCtrl.Document.Window.ScrollTo(0, int.MaxValue);

Autres conseils

Je voudrais utiliser le AutoScrollOffset propriété et le définir le, en bas à gauche du contrôle WebBrowser, donc quelque chose comme:

webCtrl.AutoScrollOffset = new Point(0, webCtrl.Height);

C'est probablement excessif, mais vous pouvez également appeler un script sur le contrôle WebBrowser, puis utilisez la touche de propriétés de la balise body.Ou la scrollTo méthode de la fenêtre.

Pour appeler le script, le contrôle WebBrowser est une propriété de Document qui représente le document objet du DOM.Il a une méthode appelée InvokeScript que vous pouvez passer une chaîne de JavaScript à exécuter.

Mais...si le AutoScrollOffset de la propriété des œuvres...ouais, j'avais juste l'utiliser au lieu d'arriver en JavaScript :)

Vous pouvez garder la position de défilement sur le dessus, et insérer un nouveau message sur le dessus.

qui n'a pas besoin de faire défiler vers le bas, son regard comme twitter :)

user2:
  new message   ← a new message is insert on top

user1:
  old message
 public virtual void ScrollMessageIntoView()
        {

            System.Windows.Forms.Application.DoEvents();
            if (browser == null || browser.IsDisposed)
                return;

            if (browser.Document == null)
            {
                browser.Document.Window.ScrollTo(0,
                browser.Document.Body.ScrollRectangle.Height);
            }
        }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top