2010-01-24 10 views
6

WebBrowser 컨트롤이 주위에 자극적 인 2 픽셀 삽입 테두리가있는 폼에 앉아 있습니다. 이로 인해 내 콘텐츠가 오른쪽 및 아래쪽으로 4 픽셀 씩 끊어지며이를 제거하는 방법을 알 수 없습니다. 컨트롤 자체에는 BorderStyle 속성이 없습니다. 테두리를 어떻게 제거합니까? WebBrowser 컨트롤에서 테두리 제거

은 스크린 샷에서 빨간색 영역을 참조하십시오

Make it stop! http://img229.imageshack.us/img229/8342/badbadwebbrowser.gif

나는 웹 브라우저가 파란색 영역과 같이 할 - 즉, 양식을 작성하여 폼의 가장자리에 플러시합니다.

답변

4

IE는 body 태그의 기본 스타일의 일부로이를 사용합니다. body 요소에 border:0px을 설정하면 사라집니다.

다행히도, 이것은 going away in IE9입니다.

+0

전화하세요. 여백 및 패딩을 다시 설정했지만 html 또는 body 요소에있을 수있는 테두리는 제거하지 않았습니다. 감사! –

+0

나는 css로 그것을 해결할 수 없다. –

+0

CSS를 페이지에 추가 할 수 없습니까, 아니면 CSS 기반 방식이 작동하지 않습니까?응용 프로그램에서 프로그래밍 방식으로 CSS를 추가하여이를 수행 할 수 있습니다. –

-1

내가 말하는 외관을 재현 할 수 없습니다. Form1.designer.cs입니다 나의 코드는 다음과 같습니다

this.webBrowser1.Location = new System.Drawing.Point(0, 0); 
    this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20); 
    this.webBrowser1.Name = "webBrowser1"; 
    this.webBrowser1.ScrollBarsEnabled = false; 
    this.webBrowser1.Size = new System.Drawing.Size(141, 125); 
    this.webBrowser1.TabIndex = 0; 
    this.webBrowser1.Uri = .... 

과 webcontrol는 ... 내가 VS 2008 SP1을 사용하고 경계없이 표시됩니다/윈도우 아마 7

추가하려고한다 콘테이너 안의 컨트롤, 예. 패널.

+1

xp에서 양식을 볼 때 질문과 똑같이 나타납니다. Win7은 테두리를 표시하지 않습니다. –

+0

@ 하산 : Windows 버전과 아무 관련이 없습니다. 그것은 브라우저 버전에 따라 다릅니다! – Elmue

1

WebBrowser 컨트롤은 컨트롤 클래스의 표시 스타일을 상속합니다. 컨트롤의 테두리 스타일을 제어하려는 경우 해당 코드를 사용할 수 있습니다 (예 : Form.Designer.cs에서 :


    using System; 
    using System.ComponentModel; 
    using System.Windows.Forms; 

    public class wbExt : System.Windows.Forms.WebBrowser 
    { 
     private BorderStyle _borderStyle; 
     [ 
     Category("Appearance"), 
     Description("The border style") 
     ] 

     public BorderStyle BorderStyle 
     { 
      get 
      { 
       return _borderStyle; 
      } 
      set 
      { 
       _borderStyle = value; 
       this.RecreateHandle(); 
       Invalidate(); 
      } 
     } 

     protected override CreateParams CreateParams 
     { 
      get 
      { 
       const int WS_BORDER = 0x00800000; 
       const int WS_EX_STATICEDGE = 0x00020000; 
       CreateParams cp = base.CreateParams; 
       switch (_borderStyle) 
       { 
        case BorderStyle.FixedSingle: 
         cp.Style |= WS_BORDER; 
         break; 
        case BorderStyle.Fixed3D: 
         cp.ExStyle |= WS_EX_STATICEDGE; 
         break; 
       } 
       return cp; 
      } 
     } 

     public wbExt() 
     { 
     } 
    } 

이제 Form 클래스에서 생성 된 코드를 변경할 수 있습니다. 그런

private wbExt webBrowser1;

및 형태의 InitializeComponent에서 웹 브라우저 항목의 생성을 다시 쓰기 :

this.webBrowser1 = new WindowsFormsApplication1.wbExt();
그래서, 지금
webBrowser1.BorderStyle = BorderStyle.None;
는 웹 브라우저 컨트롤에서 모든 테두리를 제거합니다.

+0

코드 샘플을 보내 주셔서 감사합니다. 그것이 밝혀 졌을 때, 나의 진짜 문제는 내가 컨트롤에로드하는 문서가 아니라 컨트롤 자체에있었습니다. –

+0

이 답변은 완전하게 잘못되었습니다. 여기서 말하는 경계는 바깥 쪽이 아닌 브라우저 컨트롤 안에 있습니다. – Elmue

3

border:none; 스타일 속성을 html 요소에 추가하여 동일한 문제를 해결했습니다.

<html style="border:none;"> 

먼저 나는 요소에 추가합니다 시도했지만 작동하지 않았다, 그러나 그것은 루트 HTML 요소에서 작동합니다.

Windows XP에서 WebBrowser 개체 용으로 사용되는 IE 버전 - 버전 6은 루트 HTML 요소를 기본적으로 테두리가있는 것으로 해석합니다. WebBrowser에 표시된 웹 페이지를 직접 제어 할 수 있다면 스타일 속성을 페이지의 HTML 소스에 직접 추가 할 수 있습니다. 그렇지 않은 경우에는 프로그래밍 방식으로 WebBrowser에서 HTML을 편집 할 수있는 방법이 있어야합니다 귀하의 응용 프로그램의 측면에.

+0

이것은 IE 9에서는 작동하지 않습니다. 바보 같은 경계를 제거하는 유일한 방법은 Elmue

관련 문제