Frage

Ich arbeite an einer einfachen Chat-Anwendung, die ein System.Windows.Forms.WebBrowser-Steuerelement verwendet, um die Nachrichten zwischen dem Benutzer und dem Empfänger anzuzeigen.Wie kann ich das Steuerelement dazu bringen, jedes Mal, wenn ich den DocumentText des Steuerelements aktualisiere, automatisch nach unten zu scrollen?

War es hilfreich?

Lösung

Danke Leute – ich habe euch beiden positiv bewertet, aber keiner von beiden würde für meine Situation funktionieren.Am Ende habe ich Folgendes getan:

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

Andere Tipps

Ich würde die AutoScrollOffset-Eigenschaft verwenden und sie unten links im WebBrowser-Steuerelement festlegen, also etwa so:

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

Das ist wahrscheinlich übertrieben, aber Sie könnten auch ein Skript im WebBrowser-Steuerelement aufrufen und dann die Scroll-Eigenschaften des Body-Tags verwenden.Oder die scrollTo-Methode des Fensters.

Um ein Skript aufzurufen, verfügt das WebBrowser-Steuerelement über eine Document-Eigenschaft, die das Dokumentobjekt aus dem DOM darstellt.Es verfügt über eine Methode namens InvokeScript, mit der Sie eine auszuführende JavaScript-Zeichenfolge übergeben können.

Aber...wenn die AutoScrollOffset-Eigenschaft funktioniert ...Ja, ich würde das einfach verwenden, anstatt mich mit JavaScript zu beschäftigen :)

Sie können die Bildlaufposition oben beibehalten und eine neue Nachricht oben einfügen.

Das muss nicht ganz nach unten gescrollt werden, es sieht aus wie 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);
            }
        }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top