2008-09-05 7 views
2

저는 System.Windows.Forms.WebBrowser 컨트롤을 사용하여 간단한 채팅 응용 프로그램을 작성하여 사용자와받는 사람 사이의 메시지를 표시하고 있습니다. 컨트롤의 DocumentText를 업데이트 할 때마다 컨트롤이 자동으로 맨 아래로 스크롤되도록하려면 어떻게합니까?WebBrowserControl 아래쪽으로 스크롤

+0

비슷한 질문 : [?을 System.Windows.Forms.WebBrowser 끝으로 이동하는 방법 (HTTP : //stackoverflow.com/questions/990651/how-to-scroll-to-end-of-system-windows-forms-webbrowser) – infografnet

답변

5

고마워으로 얻는 것을 사용하십시오 - 당신 모두를 선정하지만, 둘 다에 대한 해결 것 내 상황. 내가하고 결국은 당신이 위로 스크롤 위치를 유지하고, 상단에 새 메시지를 삽입 할 수 있습니다

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

VB에서이 작업을 수행하는 경우 Integer.MaxValue를 사용하지 말고 Int16을 사용하십시오. 대신 .MaxValue. – Andy

2

나는 AutoScrollOffset 속성을 사용하고 그것을 WebBrowser 컨트롤의 왼쪽 하단을 설정, 그래서 뭔가 같은 것입니다 :

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

이 아마 잔인한 사람입니다,하지만 당신은 또한 웹 브라우저 컨트롤에 스크립트를 호출 한 후 수 body 태그의 스크롤 특성을 사용하십시오. 또는 윈도우의 scrollTo 메소드.

스크립트를 호출하기 위해 WebBrowser 컨트롤에는 DOM의 문서 개체를 나타내는 Document 속성이 있습니다. InvokeScript라는 메서드가있어서 JavaScript 문자열을 전달하여 실행할 수 있습니다.

하지만 ... AutoScrollOffset 속성이 작동하는 경우 ... 그래, 난 그냥 대신 자바 스크립트 :

0

했다. , 아래로 트위터 : 같은 그 모습을 스크롤 할 필요가 없습니다

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

user1: 
    old message 
0
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); 
      } 
     } 
관련 문제