2009-08-02 11 views
15

Ho un'applicazione WinForms, in esecuzione su .net 3.5. Questa applicazione genera al volo HTML, che include il documento completo e anche un foglio di stile CSS (all'interno dell'elemento head).Il modo migliore per eseguire il rendering HTML nell'applicazione WinForms?

Sto utilizzando il controllo WebBrowser e l'impostazione browser.DocumentText nel mio codice HTML generato, ma non sembra applicare correttamente gli stili sull'elemento body (ho impostato il colore di sfondo su # 000000 nel CSS, ma il lo sfondo è ancora bianco).

Mi chiedo se a) ci sono alcune alternative per rendere l'HTML relativamente semplice in C# (ovvero un renderer HTML completamente gestito) o b) quale sarebbe il modo migliore per eseguire il rendering HTML usando il controllo WebBrowser, inclusa la corretta gestione di inline -css e senza utilizzare un file temporaneo sul disco rigido.

Modifica: Il problema di non applicare CSS era un problema separato. Ho inserito il mio attuale CSS in un blocco CDATA, che sembra non farlo applicare correttamente. Ora è risolto, ma la domanda continua a sussistere.

+5

È stato stupido chiudere questa domanda solo perché ha la parola "migliore" nel titolo! È una bella domanda e mi ha aiutato. – Bitterblue

risposta

3

Rimani con il WebBrowser incorporato. L'HtmlRenderer dell'altra risposta è ottimo, ma rende un'immagine.

+7

HtmlRenderer è stato aggiornato da allora e ora ha il pieno supporto per la selezione del testo, copia-incolla, ecc. FYI. – Arthur

14

Per il rendering HTML gestito vedere HtmlRenderer su GitHub.

+0

Ora sembra sexy, provando. –

+1

C'è una versione più recente in [CodePlex] (http://htmlrenderer.codeplex.com/) e sembra che lo sviluppo si sia spostato lì. Un grande componente davvero. – RoadBump

+0

Questo è superiore al WebBrowser interno, che ha un overhead di COM aggiuntivo e non funziona bene con il modello apartment del thread [Leggi: Non riuscivo a far funzionare WebBrowser quando viene avviato da un thread di BackgroundWorker]. E il componente è solo 200K! –

0

Si potrebbe esaminare utilizzando un motore di visualizzazione. Stand La maggior parte dei motori di vista possono lavorare in uno stand-alone api modo

per esempio NHaml e NVelocity entrambi possono essere usati da soli

http://code.google.com/p/nhaml/

http://www.castleproject.org/others/nvelocity/index.html

e presumo Spark può essere così

http://dev.dejardin.org/

+0

Non penso che quelli andranno bene, a quanto mi risulta, creano HTML da un modello. Sto cercando qualcosa che rende HTML sullo schermo, aka. un browser. –

0

ho sviluppato quello che stavi chiedendo: un "completamente gestita renderer HTML", che sarà "rendere relativamente semplice HTML in C#". Supporta un sottoinsieme di CSS, che è possibile specificare "in un foglio di stile CSS incorporato (all'interno dell'elemento head)".

Per dettagli, vedere the ModelText HTML control.

Problemi correlati