Foros del Web » Programación para mayores de 30 ;) » .NET »

Colorear una palabra en richtextbox en C#

Estas en el tema de Colorear una palabra en richtextbox en C# en el foro de .NET en Foros del Web. Buenas tardes estimados Tengo un problema con mi codigo, la idea es que tiene que cambiarle el color a una palabra en el richtextbox si ...
  #1 (permalink)  
Antiguo 09/09/2012, 22:10
 
Fecha de Ingreso: septiembre-2012
Mensajes: 3
Antigüedad: 11 años, 6 meses
Puntos: 0
Colorear una palabra en richtextbox en C#

Buenas tardes estimados
Tengo un problema con mi codigo, la idea es que tiene que cambiarle el color a una palabra en el richtextbox si esa palabra concuerda con el grupo de palabras reservadas, es decir si do aparece y do es palabra reservada, entonces do aparecera con un color rojo, el problema que tengo es que si ingreso 3 veces seguidas la palabra me tira el error diciendo que el fichero inicio tiene el valor de -1.

Les dejo el codigo aqui abajo

Código:
public partial class Form1 : Form
    {
        string[] Reservadas = new string[] { "else", "if" };
          public Form1()
        {
            InitializeComponent();
            this.richTextBox1.TextChanged += (ob, ev) =>
                {
                    var palabras = this.richTextBox1.Text.Split(new char[] { ' ' },                
                    StringSplitOptions.RemoveEmptyEntries);
                    var resultado = from b in Reservadas
                                    from c in palabras
                                  
                                    where c == b
                                    select b;

                    int inicio = 0;
                    foreach (var item in resultado)
                    {
                        inicio = this.richTextBox1.Text.IndexOf(item, inicio);
                        this.richTextBox1.Select(inicio, item.Length);
                        this.richTextBox1.SelectionColor = Color.Red;
                        this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
                        inicio++;
                    }

                    this.richTextBox1.SelectionColor = Color.Black;
                    this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;

                };
Ojala me pueda ayuda con mi duda.

Saludos!
  #2 (permalink)  
Antiguo 10/09/2012, 09:23
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: Colorear una palabra en richtextbox en C#

Hola gedard1!!!
1º Bienvenido al Foro!!.
2º Ya logré modificar y al parecer ya no cae en problemas, trata de analizar el código :

Código C:
Ver original
  1. public partial class Form1 : Form
  2.     {
  3.         string[] Reservadas = new string[] { "else", "if" };
  4.         int posicion = 0;
  5.  
  6.           public Form1()
  7.         {
  8.             InitializeComponent();
  9.             {
  10.             ejecucion();
  11.  
  12.             this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length;
  13.  
  14.             this.richTextBox1.TextChanged += (ob, ev) =>
  15.                 {
  16.                     posicion = richTextBox1.SelectionStart;
  17.                     ejecucion();
  18.                 };
  19.  
  20.             }
  21.         }
  22.  
  23.         private void ejecucion()
  24.         {
  25.             this.richTextBox1.Select(0, richTextBox1.Text.Length);
  26.             this.richTextBox1.SelectionColor = Color.Black;
  27.             this.richTextBox1.Select(posicion, 0);
  28.  
  29.             string[] texto = richTextBox1.Text.Trim().Split(' ');
  30.             int inicio = 0;
  31.  
  32.             foreach (string x in texto)
  33.             {
  34.                 foreach (string y in Reservadas)
  35.                 {
  36.                     if (x.Length != 0)
  37.                     {
  38.                         if (x.Trim().Equals(y))
  39.                         {
  40.                             inicio = this.richTextBox1.Text.IndexOf(x, inicio);
  41.                             this.richTextBox1.Select(inicio, x.Length);
  42.                             richTextBox1.SelectionColor = Color.Red;
  43.                             this.richTextBox1.Select(posicion, 0);
  44.                             inicio = inicio + 1;
  45.                         }
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.  
  51.     }
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Última edición por Aquaventus; 10/09/2012 a las 14:06 Razón: Correjido completamente.
  #3 (permalink)  
Antiguo 10/09/2012, 15:41
 
Fecha de Ingreso: septiembre-2012
Mensajes: 3
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Colorear una palabra en richtextbox en C#

Muchas gracias por tu respuesta!, si funciona tu codigo.
Tengo una curiosidad, se pudiera realizar esta misma funcion pero sin usar split? es decir usando un instruccion que recoja caracter por caracter.
  #4 (permalink)  
Antiguo 10/09/2012, 15:58
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: Colorear una palabra en richtextbox en C#

sí se puede pero esto ya involucra más código y un poco más complejo el análisis del texto, que por el momento ya tienes la base como para que lo puedas recorrer caracter por caracter. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 12/09/2012, 17:21
 
Fecha de Ingreso: septiembre-2012
Mensajes: 3
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Colorear una palabra en richtextbox en C#

Cita:
Iniciado por Aquaventus Ver Mensaje
sí se puede pero esto ya involucra más código y un poco más complejo el análisis del texto, que por el momento ya tienes la base como para que lo puedas recorrer caracter por caracter. Saludos!.
Muchas Gracias por tu respuesta, me sirvio bastante. Saludos!

Etiquetas: c#, colores, richtextbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:28.