웹 브라우저 컨트롤에서 스크롤 막대를 사용하려고합니다. 그러나 사용자 지정 메시지 상자에 대한 메시지를 표시하는 데이 메서드를 사용할 것이므로 필요없는 경우에도 스크롤 막대를 표시하지 않으려합니다. 기본적으로 그렇게하는 것처럼 보입니다. 이를 피하기 위해 컨트롤의 스크롤 막대를 비활성화하고 대신 패널과 같은 다른 컨트롤에서 스크롤 막대를 사용하기로 결정했습니다. 이 방법은 브라우저 페이지의 내용이 너무 커서 적합하지 않은 경우에만 나타납니다.WebBrowser 컨트롤에 WCustom 스크롤 막대가 나타나지 않습니다.
비록 이것이 유효한 해결책 인 StackOverflow 에서조차 꽤 많은 게시물을 읽었지만 이것은 잘 해결되지 않았습니다. 내가 여기 솔루션을 사용하려고 할 때 하나의 예는 다음과 같습니다
Scrolling problem with a WebBrowser control contained in a Panel control
보인다으로 스크롤바는 웹 브라우저 사용할 경우,이 패널을 사용 스크롤바를 하나 못하게하지만. 이것은 디자인 모드에서 테스트 할 때와 같은 것으로 보입니다. 이를 극복하기 위해 패널 안의 웹 브라우저 뒤에 그림 상자를 추가했습니다. 디자인 모드 (그림 상자와 웹 브라우저의 크기를 조정하면 패널에서 해당 스크롤바를 사용할 수 있음)에서 실행되었지만 런타임 중에는 작동하지 않았습니다. 그림 상자를 웹 브라우저 컨트롤의 크기로 변경하려면 코드를 추가했습니다. 자체는 항상 스크롤 가능한 내용의 크기에 맞게 크기가 조정됩니다.
ScrollableRectangle 크기가 컨트롤의 크기보다 큰 경우에 따라 프로그래밍 방식으로 웹 브라우저의 스크롤 막대를 사용하거나 사용하지 않도록 설정했습니다. 이론적으로는 ScrollbarsEnabled 속성이 변경 될 때마다 컨트롤 내의 모든 텍스트를 지우는 것을 제외하고는 스크롤바가없는 상태로 다시 변경된다는 점을 제외하고는 이론적으로 괜찮을 것입니다. 키가 컨트롤에 누를 때마다
I 효과적으로이라고, 다음 코드로이 일을 해요 :
if (Output.Document.Body != null)
{
if (Output.Document.Body.ScrollRectangle.Size.Height > Output.Size.Height
|| Output.Document.Body.ScrollRectangle.Size.Width > Output.Size.Width)
Output.ScrollBarsEnabled = true;
else
Output.ScrollBarsEnabled = false;
}
else
Output.ScrollBarsEnabled = false;
이있는 것 나는 또한 HTML 편집기에 대한 해결책이 필요하다는 것을주의하는 것도 중요 응용 프로그램 내에서 사용되므로 이상적으로 모든 솔루션은 페이지로드 이벤트 등에 의존하지 않을 것입니다. 웹 브라우저가 디자인 모드를 on으로 설정했을 때 트리거되지 않는 것처럼 보이므로 HTML 편집기로 작동하는 데 필요합니다). 그러나이 특별한 상황에서 더 나은 솔루션이 없다면 기본 스크롤바를 사용하도록 설정할 수 있습니다.
편집 : HTML 내용의 스크롤 막대에 대해 이야기하는 것이 아닙니다. HTML의 유연한 서식 지정을 허용하기 위해 HTML이 사용 되었기 때문에 걱정할 필요가 없습니다. 브라우저 컨트롤 자체의 스크롤 막대에 대해서만 말하고 있습니다.
도움을 주시면 감사하겠습니다. 감사!
유용한 해결 방법, 나를 위해 일했습니다. +1 당신과 Sheng. – fre0n