2009-11-08 31 views
14

Cómo resaltar la sintaxis en un control richtextbox COMO TIPOS DE USUARIO y UTILIZANDO una cadena [] palabras clave. Próximamente publicaré un bloc de notas ligero en la web y quiero que destaque la sintaxis. Estoy usando formularios de Windows. ¿Alguien puede publicar un ejemplo de código?Cómo resaltar la sintaxis en un RichTextBox [C#]?

Respuesta

1

¿Está utilizando Windows Forms o WPF?

Si WPF, podría echar un vistazo a AvalonEdit. Es gratis y de código abierto, y se usa en SharpDevelop (IDE de código abierto).

1

Puede cambiar la fuente de las palabras seleccionadas en richtextbox. Eche un vistazo a las propiedades Select y SelectedFont del control.

Pero, en esencia, debe repetir las palabras, verificar si hay una palabra en sus palabras clave y luego cambiar la fuente, utilizando las propiedades mencionadas anteriormente.

0

No es exactamente una respuesta a su pregunta, pero ¿ha mirado el componente del editor de texto desde SharpDevelop? Es bastante ligero (200 kB < IIRC), puede ser fácilmente integrado en aplicaciones Windows Forms y tiene resaltado de sintaxis para varios lenguajes incorporados.

De lo contrario, es posible que desee ver en this CodeProject page. Reformatea el RTF mientras escribes, que no es muy eficiente para archivos de gran tamaño, y contiene algunos bloques catch (Exception) { } espeluznantes, así que no estoy seguro si lo usaría en una aplicación vital, pero definitivamente es un buen comienzo señalar cómo se puede hacer.

0

El resaltado de sintaxis no es una tarea fácil de realizar de manera eficiente. Muchas soluciones que puede encontrar (como las que implican la modificación de RTF) son una solución única. Si desea resaltar y desmarcar palabras sobre la marcha durante la edición, su código debe estar listo para ello. No reinventaría la rueda y usar ICSharp.TextEditor o similar para resolver su problema.

+2

El resaltado de sintaxis, para un procesador de texto diseñado para devolverte la llamada o para recibir texto de forma iterativa antes del procesamiento, es bastante trivial: es solo un análisis léxico que clasifica el texto de acuerdo con su tipo de token. Pero RTF y otros editores no están diseñados de esta manera, con separación entre los datos del modelo y su presentación. –

+0

Sí, parece que RTF parece bastante viejo hoy en día ... :-) – jdehaan

4

El control Scintilla es un excelente editor de código fuente que incluye resaltado de sintaxis entre una amplia gama de otras características. Puede incrustarlo en su propia aplicación y hay un .NET wrapper disponible.

Con Scintilla puede especificar las palabras clave y luego aplicará el resaltado de sintaxis a medida que escribe.

+0

¿Cómo instalo el .dll? –

+0

Si descarga el .NET Wrapper desde http://scintillanet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34393, entonces puede simplemente agregar el archivo ScintillaNet.dll a las "Referencias" de su proyecto (si es usando Visual Studio). –

+0

requiere implementar uno de los dlls en windows \ system32, que es una gran desventaja –

Cuestiones relacionadas