Principale utente con più risposte
Cambiare colore Web Browser

Domanda
-
Si può cambiare colore ad un Web Browser?
- Modificato Visual Media Player venerdì 6 settembre 2013 15:42
Risposte
-
Per farlo, devi anzitutto caricare una pagina vuota, come la "about:blank". Dopodiché potrai accedere alla proprietà Document, e quindi alle sue caratteristiche, tra cui la BackColor. In codice:
WebBrowser1.Navigate("about:blank") WebBrowser1.Document.BackColor = Color.Purple
Emiliano Musso
- Modificato Emiliano MussoModerator venerdì 6 settembre 2013 16:00
- Proposto come risposta Carmelo La Monica venerdì 6 settembre 2013 16:11
- Contrassegnato come risposta Irina Turcu venerdì 20 settembre 2013 14:00
-
Ciao PlayVisual,
ovviamente se vuoi davvero "tutto lo sfondo" di un determinato colore non puoi impostare solo il background del document, a patto che non sia solo una paginetta "about:blank" senza css, in quel caso allora il suggerimento di fare WebBrowser1.Document.BackColor = coloreCheVuoi dovrebbe bastare, ma se è formata da altri elementi allora devi necessariamente lavorare con i css e colorare i principali elementi che danno colore alla pagina.
prendi ad esempio questo codice che punta a google (uso la Microsoft.mshtml) :
private void button1_Click(object sender, EventArgs e) { mshtml.HTMLDocument doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument; dynamic elementoHtmlCollection = doc.getElementsByTagName("body"); foreach (dynamic elementoHtml in elementoHtmlCollection) { dynamic style = elementoHtml.getAttribute("style"); string s = (string)style.background; style.background = s != "rgb(0, 0, 0)" ? "rgb(0,0,0)" : "#324544"; elementoHtml.setAttribute("style", style); }
}
Come potrai notare prendo l'elemento body, da questo imposto gli style.background al colore che voglio. Però ad esempio in questo caso (google) usa una div per il logo, per l'invito ad installare chrome, e per la barra in basso, quindi questi non hanno lo sfondo del colore che desidero, e per ottenerlo anche in quelli devo lavorare ad esempio sui div.
ecco il codice che colora lo sfondo anche del div :
private void button1_Click(object sender, EventArgs e) { mshtml.HTMLDocument doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument; dynamic elementoHtmlCollection = doc.getElementsByTagName("body"); foreach (dynamic elementoHtml in elementoHtmlCollection) { dynamic style = elementoHtml.getAttribute("style"); string s = (string)style.background; style.background = s != "rgb(0, 0, 0)" ? "rgb(0,0,0)" : "#324544"; elementoHtml.setAttribute("style", style); }
foreach (dynamic elementoHtml in elementoHtmlCollection)
{
dynamic style = elementoHtml.getAttribute("style");
string s = (string)style.background;
style.background = s != "rgb(0, 0, 0)" ? "rgb(0,0,0)" : "#324544";
elementoHtml.setAttribute("style", style);
}}
insomma devi lavorare sugli elementi che secondo te determinano lo sfondo...
- Modificato U 235 domenica 8 settembre 2013 23:34 correzione
- Contrassegnato come risposta Irina Turcu venerdì 20 settembre 2013 14:00
Tutte le risposte
-
Per farlo, devi anzitutto caricare una pagina vuota, come la "about:blank". Dopodiché potrai accedere alla proprietà Document, e quindi alle sue caratteristiche, tra cui la BackColor. In codice:
WebBrowser1.Navigate("about:blank") WebBrowser1.Document.BackColor = Color.Purple
Emiliano Musso
- Modificato Emiliano MussoModerator venerdì 6 settembre 2013 16:00
- Proposto come risposta Carmelo La Monica venerdì 6 settembre 2013 16:11
- Contrassegnato come risposta Irina Turcu venerdì 20 settembre 2013 14:00
-
Ho provato, ma quando poi apro il Porgetto cosi come hai messo il codice,andandolo ad aprire mi rimane Bianco.
WebBrowser1.Navigate("about:blank") WebBrowser1.Document.BackColor = Color.Purple
Ho provato a fare cosi con questo codice qui sotto e la cosa ha peggiorato,perchè aprendo il Debug mi si è bloccato e lo dovuto richiudere.
WebBrowser1.Navigate = " google.it " WebBrowser1.Navigate("about:blank") WebBrowser1.Document.BackColor = Color.Purple
- Modificato Visual Media Player domenica 8 settembre 2013 11:10
-
La seconda versione è sbagliata per forza, ad un metodo non è possibile passare parametri come se si trattasse di un'espressione. Per il primo, secondo i miei test funziona, quindi abbiamo due possibilità: o il tuo controllo non si chiama WebBrowser1 (e quindi devi sostituire con il nome del tuo browser), oppure stai utilizzando una versione di VS con controlli antecedenti ai miei. Nelle mie prove ho utilizzato VS2012, la cui versione Express è scaribabile gratuitamente dal sito Microsoft.
Emiliano Musso
-
Bhe allora forse sbaglio io qualcosa,ti posto il codice che uso e l'immagine di quando apro il Debug.
Public Class Form1 Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted WebBrowser1.Navigate("about:blank") WebBrowser1.Document.BackColor = Color.Purple End Sub End Class
Qui apro il Debug, ma mi esce sempre bianco.
-
Ciao PlayVisual,
Bhe allora forse sbaglio io qualcosa,ti posto il codice che uso e l'immagine di quando apro il Debug.
Public Class Form1 Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted WebBrowser1.Navigate("about:blank") WebBrowser1.Document.BackColor = Color.Purple End Sub End Class
Qui apro il Debug, ma mi esce sempre bianco.
se inserisci il codice nell'evento click di un pulsante il codice soprariportato funziona come previsto :)
Ciao.
- Carmelo La Monica
- Visual Basic Tips e Tricks Blog
- WordPress.com Blog
- Blogger
- CrystalwebDotNetGroup
-
Funziona,ma il problema è che nn posso usarlo,nel senso che poi il WebBrowser per poterlo usare normalmente il codice Navigate per far uscire la pagina di Google colorara dove lo devo inserire? in un'altro Button?
WebBrowser1.Navigate("http://www.google.it/")
-
Ciao PlayVisual,
ovviamente se vuoi davvero "tutto lo sfondo" di un determinato colore non puoi impostare solo il background del document, a patto che non sia solo una paginetta "about:blank" senza css, in quel caso allora il suggerimento di fare WebBrowser1.Document.BackColor = coloreCheVuoi dovrebbe bastare, ma se è formata da altri elementi allora devi necessariamente lavorare con i css e colorare i principali elementi che danno colore alla pagina.
prendi ad esempio questo codice che punta a google (uso la Microsoft.mshtml) :
private void button1_Click(object sender, EventArgs e) { mshtml.HTMLDocument doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument; dynamic elementoHtmlCollection = doc.getElementsByTagName("body"); foreach (dynamic elementoHtml in elementoHtmlCollection) { dynamic style = elementoHtml.getAttribute("style"); string s = (string)style.background; style.background = s != "rgb(0, 0, 0)" ? "rgb(0,0,0)" : "#324544"; elementoHtml.setAttribute("style", style); }
}
Come potrai notare prendo l'elemento body, da questo imposto gli style.background al colore che voglio. Però ad esempio in questo caso (google) usa una div per il logo, per l'invito ad installare chrome, e per la barra in basso, quindi questi non hanno lo sfondo del colore che desidero, e per ottenerlo anche in quelli devo lavorare ad esempio sui div.
ecco il codice che colora lo sfondo anche del div :
private void button1_Click(object sender, EventArgs e) { mshtml.HTMLDocument doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument; dynamic elementoHtmlCollection = doc.getElementsByTagName("body"); foreach (dynamic elementoHtml in elementoHtmlCollection) { dynamic style = elementoHtml.getAttribute("style"); string s = (string)style.background; style.background = s != "rgb(0, 0, 0)" ? "rgb(0,0,0)" : "#324544"; elementoHtml.setAttribute("style", style); }
foreach (dynamic elementoHtml in elementoHtmlCollection)
{
dynamic style = elementoHtml.getAttribute("style");
string s = (string)style.background;
style.background = s != "rgb(0, 0, 0)" ? "rgb(0,0,0)" : "#324544";
elementoHtml.setAttribute("style", style);
}}
insomma devi lavorare sugli elementi che secondo te determinano lo sfondo...
- Modificato U 235 domenica 8 settembre 2013 23:34 correzione
- Contrassegnato come risposta Irina Turcu venerdì 20 settembre 2013 14:00