2010-01-24 15 views
6

Ich habe ein WebBrowser-Steuerelement, das auf einem Formular sitzt, das einen irritierenden 2px-Einfügeumrandungsrahmen aufweist. Dadurch wird mein Inhalt rechts und unten um 4 px abgeschnitten und ich kann nicht herausfinden, wie ich ihn loswerden kann. Das Steuerelement selbst hat keine BorderStyle-Eigenschaften - wie entfernt man den Rahmen?Entfernen von Rahmen aus dem WebBrowser-Steuerelement

den roten Bereich im Screenshot sehen:

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

ich das WebBrowser will wie der blauen Bereich suchen - das heißt, das Formular auszufüllen und gegen die Form der Kanten bündig sein.

Antwort

4

IE zeichnet das als Teil des Standardstils für das body-Tag. Stellen Sie border:0px auf das Körperelement und es geht weg.

Zum Glück ist dies going away in IE9.

+0

Guter Anruf. Ich hatte die Ränder und das Auffüllen zurückgestellt, aber keine Ränder entfernt, die auf den HTML- oder Körperelementen möglicherweise sind. Vielen Dank! –

+0

Ich kann es nicht mit CSS lösen. –

+0

Können Sie der Seite kein CSS hinzufügen oder funktioniert ein CSS-basierter Ansatz nicht?Sie können möglicherweise programmgesteuert CSS hinzufügen, um dies aus Ihrer Anwendung zu erreichen. –

-1

Ich kann das Aussehen, von dem Sie erzählen, nicht reproduzieren. Mein Code in der Form1.Designer.cs ist:

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 = .... 

und die webcontrol ist ohne Grenze gezeigt ... Ich bin mit VS 2008 SP1/Windows 7.

Vielleicht sollten Sie versuchen, hinzufügen die Kontrolle innerhalb eines Behälters, z ein Panel.

+1

Sehen Sie sich Ihr Formular auf xp an und Sie werden genau wie in der Frage sehen. Win7 zeigt keine Grenzen. –

+0

@Hasan: Es hat nichts mit der Windows-Version zu tun. Das hängt von der Browserversion ab! – Elmue

1

Das WebBrowser-Steuerelement erbt den Anzeigestil von der Steuerelementklasse. Wenn Sie den Grenzstil der Steuerung steuern möchten, können Sie einen solchen Code verwenden, z. in 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() 
     { 
     } 
    } 

Jetzt können Sie generierten Code in der Formularklasse ändern.

private wbExt webBrowser1;

und schreiben Erstellung von Web-Browsers Artikel in InitializeComponent der Form, wie folgt aus:

this.webBrowser1 = new WindowsFormsApplication1.wbExt();
So, jetzt
webBrowser1.BorderStyle = BorderStyle.None;
werden alle Grenzen von WebBrowser-Steuerelement entfernen.

+0

Vielen Dank für das Codebeispiel. Wie sich herausstellte, war mein wirkliches Problem das Dokument, das ich in das Steuerelement geladen habe, und nicht das Steuerelement selbst. –

+0

Diese Antwort ist völlig falsch. Die Grenze, über die wir hier sprechen, ist INSIDE die Browser-Kontrolle NICHT außerhalb. – Elmue

3

Ich habe das gleiche Problem durch Hinzufügen border:none; Stil Attribut in das html Element gelöst.

<html style="border:none;"> 

Zuerst habe ich versucht, es in das Element Körper hinzufügen, aber es hat nicht funktioniert, aber es funktioniert auf root html Element.

Die IE-Version auf Windows XP für WebBrowser-Objekt verwendet - ich glaube, die Version 6 - interpretiert das Stamm-HTML-Element als einen Rahmen standardmäßig haben. Wenn Sie direkte Kontrolle über die Web-Seite haben, die im WebBrowser angezeigt wird, können Sie ein Stil-Attribut direkt zur HTML-Quelle der Seite hinzufügen - wie ich es getan habe. Wenn nicht, sollte es eine Möglichkeit geben, das HTML innerhalb des WebBrowsers programmatisch zu bearbeiten auf der Seite Ihrer Bewerbung.

+0

Dies funktioniert nicht auf IE 9. Die einzige Möglichkeit, diese dumme Grenze zu entfernen, ist durch Entfernen der Elmue

Verwandte Themen