ScintillaNET en WPF
ScintillaNET es un control de edición de código para Windows Forms, este control cuenta con opciones de resaltar código con colores, mostrar números de línea, agregar marcadores, opciones de autocompletado y muchas otras opciones interesantes.
ScintillaNET cuenta con soporte para mas de 90 lenguajes entre los que podemos mencionar java, python, c++, c#, html, css, JavaScript, php, entre otros, además podemos crear o agregar soporte para lenguajes propios o personalizados.
Descargar el control ScintillaNET
La versión del control scintilla para .net se encuentra alojada en CodePlex y podemos descargar los archivos binarios, el código fuente y la documentación en la siguiente dirección: http://scintillanet.codeplex.com
Instalar ScintillaNET en WPF
Ahora veremos como agregar el control scintilla a una aplicación WPF, una vez descargado los archivos localizamos los archivos SciLexer.dll y ScintillaNET.dll, para x64 usamos SciLexer64.dll, extremos estos archivos.
Creamos una aplicación WPF .NET y agregamos una referencia a ScintillaNET.dll del siguiente modo:
Lo siguiente que debemos hacer es agregar un host para contener el control ya que esta diseñado para Windows Forms, lo hacemos agregando un control WindowsFormsHost, lo arrastramos del cuadro de herramientas, lo llamamos sciHost y lo colocamos donde deseemos.
Agregamos un controlador de eventos para el evento Loaded del sciHost que acabamos de crear, se debería ver de este modo:
En el controlador de eventos agregaremos el código para añadir el control ScintillaNET al host, antes debemos agregar el namespace ScintillaNET:
private void SciHostLoaded(object sender, RoutedEventArgs e)
{
Scintilla sci = new Scintilla();
sci.ConfigurationManager.Language = "python";
sciHost.Child = sci;
}
Para poder ejecutar la aplicación primero debemos agregar el archivo SciLexer.dll ó SciLexer64.dll a la carpeta bin/Debug del proyecto.
Con esto ya tenemos un editor de texto capaz de manipular código python, resaltando el código en diferentes colores, agregaremos código que nos permita mostrar los números de línea:
private void SciHostLoaded(object sender, RoutedEventArgs e)
{
Scintilla sci = new Scintilla();
sci.ConfigurationManager.Language = "python";
sci.Margins.Margin0.Width = 40;
sci.Margins.Margin2.Width = 20;
sciHost.Child = sci;
}
Para finaliza veamos como agregar marcadores a una determinada línea de código, contamos con varios marcadores que podemos personalizar.
Primero creamos un objeto de la clase Marker, este representa nuestro marcador, lo configuramos por ejemplo definiendo su tipo y color, y luego lo agregamos a la línea deseada:
Marker mark = sci.Markers[0];
mark.Symbol = MarkerSymbol.Plus;
mark.BackColor = System.Drawing.Color.Red;
sci.Lines[0].AddMarker(mark);
Con este código agregamos un marcador en la primera línea.
Comentarios
Publicar un comentario