Rimozione del bordo dal controllo WebBrowser

Ho un controllo WebBrowser seduto su un modulo che ha un fastidioso 2px bordo dall’aspetto simile a quello che lo circonda. Sta facendo ritagliare i miei contenuti di 4 px a destra e in basso, e non riesco a capire come sbarazzarmene. Il controllo stesso non ha proprietà BorderStyle – come si rimuove il bordo?

Vedi l’area rossa nella schermata:

Fallo smettere! http://img229.imageshack.us/img229/8342/badbadwebbrowser.gif

Voglio che il browser web assomigli all’area blu, ovvero per riempire il modulo ed essere allineato ai bordi del modulo.

IE lo disegna come parte dello stile predefinito sul tag body. Imposta il border:0px sull’elemento del corpo e scompare.

Per fortuna, questo sta andando via in IE9 .

Ho risolto lo stesso problema aggiungendo il border:none; attributo style nell’elemento html .

  

Per prima cosa ho provato ad aggiungerlo all’elemento body ma non ha funzionato, ma funziona sull’elemento root html .

La versione IE utilizzata su Windows XP per l’object WebBrowser – penso che la versione 6 – interpreti l’elemento html root come avente un bordo per impostazione predefinita. Se hai il controllo diretto sulla pagina web visualizzata nel WebBrowser, puoi aggiungere un attributo di stile direttamente al sorgente HTML della pagina – come ho fatto io -, in caso contrario, dovrebbe esserci un modo per modificare l’HTML all’interno del browser Web a livello di codice sul lato della tua domanda.

Il controllo WebBrowser eredita lo stile di visualizzazione dalla class di controllo. Se si desidera controllare lo stile di controllo del bordo, è ansible utilizzare un codice simile, ad esempio 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() { } } 

Ora puoi cambiare il codice generato nella class Form.

 private wbExt webBrowser1; 

e riscrivi la creazione dell’elemento webBrowser in InitializeComponent del modulo, in questo modo:

 this.webBrowser1 = new WindowsFormsApplication1.wbExt(); 

Così ora

 webBrowser1.BorderStyle = BorderStyle.None; 

rimuoverà i bordi dal controllo webBrowser.

Non riesco a riprodurre l’aspetto di cui stai parlando. Il mio codice in 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 = .... 

e il webcontrol è mostrato senza il bordo … Sto usando VS 2008 SP1 / Windows 7.

Forse dovresti provare ad aggiungere il controllo all’interno di un contenitore, ad esempio un pannello.