none
Cambiare colore Web Browser RRS feed

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


    venerdì 6 settembre 2013 15:57
    Moderatore
  • 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); }

    elementoHtmlCollection = doc.getElementsByTagName("div");
                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
    domenica 8 settembre 2013 23:33

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


    venerdì 6 settembre 2013 15:57
    Moderatore
  • 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


    domenica 8 settembre 2013 09:35
  • 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

    domenica 8 settembre 2013 11:12
    Moderatore
  • 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.

    domenica 8 settembre 2013 19:24
  • 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.


    domenica 8 settembre 2013 19:33
  • 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/")

    domenica 8 settembre 2013 19:53
  • 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); }

    elementoHtmlCollection = doc.getElementsByTagName("div");
                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
    domenica 8 settembre 2013 23:33