문제

저는 System.Windows.Forms.WebBrowser 컨트롤을 사용하여 사용자와 수신자 간의 메시지를 표시하는 간단한 채팅 응용 프로그램을 개발 중입니다.컨트롤의 DocumentText를 업데이트할 때마다 컨트롤이 자동으로 아래쪽으로 스크롤되도록 하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

고마워요. 저는 두 분 모두에게 투표했지만 둘 다 내 상황에 맞지 않을 것입니다.내가 결국 한 일은

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

다른 팁

AutoScrollOffset 속성을 사용하여 WebBrowser 컨트롤의 왼쪽 하단에 다음과 같이 설정합니다.

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

이는 아마도 과잉일 수 있지만 WebBrowser 컨트롤에서 스크립트를 호출한 다음 body 태그의 스크롤 속성을 사용할 수도 있습니다.또는 창의 scrollTo 메소드.

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

하지만...AutoScrollOffset 속성이 작동하는 경우...예, JavaScript를 사용하는 대신 이를 사용하겠습니다. :)

스크롤 위치를 맨 위에 유지하고 맨 위에 새 메시지를 삽입할 수 있습니다.

아래로 스크롤할 필요가 없습니다. 트위터처럼 보입니다. :)

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);
            }
        }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top