代码之家  ›  专栏  ›  技术社区  ›  Ryan Lanciaux

WebBrowser控件滚动到底部

  •  2
  • Ryan Lanciaux  · 技术社区  · 16 年前

    我正在开发一个简单的聊天应用程序,使用System.Windows.Forms.WebBrowser控件显示用户和收件人之间的消息。如何使控件在每次更新控件的DocumentText时自动滚动到底部?

    5 回复  |  直到 16 年前
        1
  •  5
  •   Ryan Lanciaux    16 年前

    谢谢各位,我投票支持你们两个,但两个都不适合我的情况。我最后做的是

    webCtrl.Document.Window.ScrollTo(0, int.MaxValue);
    
        2
  •  2
  •   David Mohundro alexsmn    16 年前

    这可能有些过分,但您也可以调用WebBrowser控件上的脚本,然后使用body标记的滚动属性。或窗口的scrollTo方法。

    要调用脚本,WebBrowser控件具有一个Document属性,该属性表示DOM中的Document对象。它有一个名为InvokeScript的方法,您可以传递要执行的JavaScript字符串。

    但是如果AutoScrolOffset属性有效。。。是的,我只是使用它,而不是使用JavaScript:)

        3
  •  2
  •   John    11 年前

    我将使用AutoScrolOffset属性并将其设置为WebBrowser控件的左下角,因此类似于:

    webCtrl.AutoScrollOffset = new Point(0, webCtrl.Height);
    
        4
  •  0
  •   IlPADlI    11 年前

    您可以将滚动位置保持在顶部,并在顶部插入新消息。

    user2:
      new message   ← a new message is insert on top
    
    user1:
      old message
    
        5
  •  0
  •   Chathuranga Abeyrathne    8 年前
     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);
                }
            }