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:

1. Agregar referencia
2. Referencia a scintilla

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:

3. sciHost

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.

4. scintillaWPF

Descarga el Proyecto

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

Conectar SQL Server con Java

Histogramas OpenCV Python

Controles y Contenedores JavaFX 8 - I