2009-08-02 18 views
15

Tengo una aplicación WinForms, que se ejecuta en .net 3.5. Esta aplicación genera HTML sobre la marcha, que incluye el documento completo, y también una hoja de estilo CSS en línea (dentro del elemento principal).¿La mejor forma de renderizar HTML en la aplicación WinForms?

Estoy usando el navegador WebBrowser y el navegador de configuración.DocumentoTexto a mi HTML generado, pero eso no parece aplicar correctamente los estilos en el elemento del cuerpo (He establecido el color de fondo en # 000000 en el CSS, pero el fondo sigue siendo blanco).

Me pregunto si a) hay algunas alternativas para renderizar HTML relativamente simple en C# (es decir, un renderizador HTML completamente administrado) ob) cuál sería la mejor forma de renderizar HTML utilizando el control WebBrowser, incluido el manejo correcto de inline -css y sin usar un archivo temporal en el disco duro.

Editar: El problema de CSS-no-aplicación era un problema aparte. Puse mi CSS real en un bloque CDATA, lo que parece hacer que no se aplique correctamente. Eso ahora está arreglado, pero la pregunta en sí sigue en pie.

+5

¡Fue estúpido cerrar esta pregunta solo porque tiene la palabra "mejor" en el título! Es una buena pregunta y me ayudó. – Bitterblue

Respuesta

3

Manténgase ed con el WebBrowser incorporado. El HtmlRenderer de la otra respuesta es excelente, pero representa una imagen.

+7

El HtmlRenderer se ha actualizado desde entonces y ahora tiene soporte completo para la selección de texto, copiar y pegar, etc. FYI. – Arthur

14

Para el procesador HTML administrado, vea HtmlRenderer en GitHub.

+0

Ahora que se ve sexy, voy a intentarlo. –

+1

Hay una versión más nueva en [CodePlex] (http://htmlrenderer.codeplex.com/) y parece que el desarrollo se movió a allí. Un gran componente realmente. – RoadBump

+0

Esto es superior al WebBrowser interno, que tiene sobrecarga de COM adicional y no funciona bien con el modelo de apartamento de subproceso [Leer: no pude hacer que WebBrowser funcione cuando se inicia desde un subproceso de BackgroundWorker]. ¡Y el componente es solo 200K! –

0

Podría considerar el uso de un motor de visualización. soporte La mayoría de los motores de vista puede trabajar de una manera API independiente

por ejemplo NHaml y NVelocity tanto se pueden usar solos

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

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

y supongo que la chispa puede ser así

http://dev.dejardin.org/

+0

No creo que sirvan de nada; a mi entender, crean HTML a partir de una plantilla. Estoy buscando algo que represente HTML en la pantalla, también conocido como. un navegador. –

0

he desarrollado lo que pedían: un "completamente gestionada procesador de HTML", lo que "rendir relativamente simple HTML en C#". Es compatible con un subconjunto de CSS, que puede "especificar en una hoja de estilo CSS en línea (dentro del elemento principal)".

Para obtener más información, consulte the ModelText HTML control.

Cuestiones relacionadas