Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Eleкtro en 27 Noviembre 2012, 12:31 PM

Título: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox
Publicado por: Eleкtro en 27 Noviembre 2012, 12:31 PM
Pues eso, ¿Sería posible cambiar el color de UNA sola línea de este richtextbox para que la línea de "Processing: ..." saliera en amarillo por ejemplo?

Y otra pregunta relacionada, ¿Sería posible cambiar solamente UNA palabra de color?

Agradezco cualquier información!

(http://img515.imageshack.us/img515/9674/prtscrcapturel.jpg)
Título: Re: Cambiar el color de una línea en un richtextbox
Publicado por: Keyen Night en 27 Noviembre 2012, 12:48 PM
Por supuesto el RichTextBox, existe precisamente para esas cosas:

Código (vb.net) [Seleccionar]
       RichTextBox1.Select(INDEX, LONGITUD)

        RichTextBox1.SelectionColor = COLOR

        RichTextBox1.Select(0, 0)
Título: Re: Cambiar el color de una línea en un richtextbox
Publicado por: Eleкtro en 27 Noviembre 2012, 13:41 PM
Gracias Keyen, ese método solo sirve para seleccionar un rango select(A, B), estaría bien si se pudiera indicar el inicio de la línea select(Linea, A, B), pero a menos que idee la forma de sumar cuando mide cada string que voy insertando en el richtextbox... en fin, mucho consumo de tiempo y de proceso para mi app, así que lo dejo así:

Código (vbnet) [Seleccionar]
consolebox.Find("Processing: ")
consolebox.SelectionColor = Color.Yellow



Saludos!
Título: Re: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox
Publicado por: seba123neo en 27 Noviembre 2012, 13:54 PM
no es dificil,tenes que hacer un simple For de 0 hasta Lines.Length y ahi dentro usar GetFirstCharIndexFromLine, eso te devuelve el inicio de la linea y con richTextBox1.Lines(i).Length te devuelve el final de la linea, esos 2 valores se lo pones al .Select() y listo.

saludos.
Título: Re: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox
Publicado por: Eleкtro en 27 Noviembre 2012, 14:04 PM
Pues he probado esto, y ralentiza el proceso sobre un 50% (obviamente cuanto mayor séa el contenido del richtextbox...)

Código (vbnet) [Seleccionar]
              Dim textEnd As Integer = consolebox.TextLength
                Dim index As Integer = 0
                Dim lastIndex As Integer = consolebox.Text.LastIndexOf("Processing")

                While index < lastIndex
                    consolebox.Find("Processing", index, textEnd, RichTextBoxFinds.None)
                    consolebox.SelectionColor = Color.Yellow
                    index = consolebox.Text.IndexOf("Processing", index) + 1
                End While
Título: Re: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox
Publicado por: Keyen Night en 27 Noviembre 2012, 14:07 PM
Has lo que dice seba123neo, el For solo dará tantas vueltas como lineas tenga el RichTextBox, será más rápido que el código que tienes actualmente.
Título: Re: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox
Publicado por: seba123neo en 27 Noviembre 2012, 14:24 PM
algo asi:

Código (vbnet) [Seleccionar]
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i As Integer = 1 To 500
            RichTextBox1.Text += "Linea " & i & vbNewLine
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i As Integer = 0 To RichTextBox1.Lines.Length - 1
            Dim first As Integer = RichTextBox1.GetFirstCharIndexFromLine(i)
            RichTextBox1.Select(first, RichTextBox1.Lines(i).Length)
            RichTextBox1.SelectionBackColor = If((i Mod 2 = 0), Color.Red, Color.White)
            RichTextBox1.SelectionColor = If((i Mod 2 = 0), Color.Black, Color.Green)
        Next
    End Sub
End Class


saludos.
Título: Re: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox
Publicado por: Eleкtro en 27 Noviembre 2012, 14:24 PM
EDITO: te me adelantaste Seba, ahora lo pruebo!

EDITO2: Tu ejemplo selecciona lineas enteras, yo necesito seleccionar la palabra "Processing" de cada linea

EDITO3: Ya está, como la palabra "Processing" empieza al principio de cada línea solo tengo que medir la longitud de la palabra y usarla como "final de índice" xD

GRACIAS




Me dice que el ínidce está fuera de la matriz, que lío:
Código (vbnet) [Seleccionar]

               For line = 0 To consolebox.Lines.Length
                   a = consolebox.GetFirstCharIndexFromLine(line)
                   b = consolebox.Lines(line).Length()
                   MsgBox(a & "," & b)
                   consolebox.Select(a, b)
                   consolebox.SelectionColor = Color.Yellow
               Next
Título: Re: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox
Publicado por: kub0x en 27 Noviembre 2012, 14:30 PM
EleKtro,

al parecer evaluas una línea mas que realmente no tienes.

0 .. lines.length - 1 sería la manera correcta de recorrer el array.

Saludos!
Título: Re: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox
Publicado por: Eleкtro en 27 Noviembre 2012, 14:38 PM
Cita de: kub0x en 27 Noviembre 2012, 14:30 PM

0 .. lines.length - 1 sería la manera correcta de recorrer el array.


Le tuve que restar una más:

Código (vbnet) [Seleccionar]
               For i As Integer = 0 To consolebox.Lines.Length - 2
                   Dim first As Integer = consolebox.GetFirstCharIndexFromLine(i)
                   '  MsgBox(first)
                   consolebox.Select(first, 10)
                   consolebox.SelectionColor = Color.Yellow
               Next


Listo! Gracias.