2010-01-24 53 views
6

Tengo un control WebBrowser sentado en un Formulario que tiene un irritante borde de 2px que parece un recuadro alrededor. Está causando que mi contenido esté recortado por 4 px en la parte derecha e inferior, y no puedo encontrar la manera de deshacerme de él. El control en sí no tiene ninguna propiedad BorderStyle: ¿cómo se elimina el borde?Quitar el borde del control WebBrowser

ver la zona roja en la captura de pantalla:

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

Quiero que el WebBrowser para parecerse a la zona azul - es decir, para llenar el formulario y estar nivelado con los bordes del formulario.

Respuesta

4

IE se dibuja como parte del estilo predeterminado en la etiqueta de cuerpo. Establezca border:0px en el elemento del cuerpo y desaparece.

Afortunadamente, esto es going away in IE9.

+0

Buena llamada. He estado restableciendo los márgenes y el relleno, pero no eliminé ningún borde que pueda estar en los elementos html o body. ¡Gracias! –

+0

No puedo resolverlo con css. –

+0

¿No puede agregar CSS a la página o no funciona un enfoque basado en CSS?Es posible que pueda agregar mediante programación CSS para lograr esto desde su aplicación. –

-1

No puedo reproducir el aspecto del que está hablando. Mi código en los Form1.Designer.cs es:

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

y la de webcontrol se muestra sin la frontera ... estoy usando VS 2008 SP1/Windows 7.

Tal vez debería tratar de añadir el control dentro de un contenedor, por ejemplo un panel.

+1

Ver su formulario en xp y verá exactamente como en la pregunta. Win7 no muestra bordes. –

+0

@Hasan: No tiene nada que ver con la versión de Windows. Depende de la versión del navegador! – Elmue

1

El control WebBrowser hereda el estilo de visualización de la clase de control. Si desea controlar el estilo de control de borde, puede usar un código como ese, p. en 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() 
     { 
     } 
    } 

Ahora puede cambiar el código generado en la clase Form.

private wbExt webBrowser1;

y reescribir creación de la partida WebBrowser en InitializeComponent de la forma, el estilo:

this.webBrowser1 = new WindowsFormsApplication1.wbExt();
lo tanto, ahora
webBrowser1.BorderStyle = BorderStyle.None;
se eliminarán todos los bordes del control WebBrowser.

+0

Gracias por el ejemplo de código. Resultó que mi verdadero problema era con el documento que estaba cargando en el control, y no con el control en sí. –

+0

Esta respuesta es completamente errónea. El borde del que estamos hablando aquí está DENTRO del control del navegador NO afuera. – Elmue

3

He resuelto el mismo problema agregando el atributo de estilo border:none; en el elemento html.

<html style="border:none;"> 

Primero trató de agregarlo a la elemento cuerpo, pero no funcionó, pero funciona en la raíz html elemento.

La versión de IE utilizada en Windows XP para el objeto WebBrowser - Creo que la versión 6 - interpreta que el elemento html raíz tiene un borde de forma predeterminada. Si tiene control directo sobre la página web que se muestra en WebBrowser, puede agregar un atributo de estilo directamente a la fuente HTML de la página, como hice yo. Si no, debería haber una manera de editar el HTML dentro del WebBrowser programáticamente en el lado de tu aplicación.

+0

Esto no funciona en IE 9. La única forma de eliminar ese estúpido borde es eliminar Elmue

Cuestiones relacionadas