Этот пример обходит причуды в свойствах полосы прокрутки, которые могут вызвать поведение, которое вы видите.
Вам нужно будет добавить ссылку COM в библиотеку объектов Microsoft HTML (mshtml), прежде чем это сработает.
Предполагая, что у вас есть WebBrowser с именем webBrowser1, вы можете попробовать следующее. Я использую несколько разных интерфейсов, потому что обнаружил, что значения, возвращаемые для свойств прокрутки, несовместимы.
using mshtml;
// ... snip ...
webBrowser1.Navigate("http://www.stackoverflow.com");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
System.Threading.Thread.Sleep(20);
}
Rectangle bounds = webBrowser1.Document.Body.ScrollRectangle;
IHTMLElement2 body = webBrowser1.Document.Body.DomElement as IHTMLElement2;
IHTMLElement2 doc = (webBrowser1.Document.DomDocument as IHTMLDocument3).documentElement as IHTMLElement2;
int scrollHeight = Math.Max(body.scrollHeight, bounds.Height);
int scrollWidth = Math.Max(body.scrollWidth, bounds.Width);
scrollHeight = Math.Max(body.scrollHeight, scrollHeight);
scrollWidth = Math.Max(body.scrollWidth, scrollWidth);
doc.scrollTop = 500;