Autor
|
Tema: (SOLUCIONADO) Cambiar el color de una línea en un richtextbox (Leído 11,095 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.788
|
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!
|
|
« Última modificación: 27 Noviembre 2012, 13:41 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Keyen Night
Desconectado
Mensajes: 496
Nothing
|
Por supuesto el RichTextBox, existe precisamente para esas cosas: RichTextBox1.Select(INDEX, LONGITUD) RichTextBox1.SelectionColor = COLOR RichTextBox1.Select(0, 0)
|
|
|
En línea
|
La Fé Mueve Montañas... ...De Dinero
La programación es más que un trabajo es más que un hobby es una pasión...
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.788
|
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í: consolebox.Find("Processing: ") consolebox.SelectionColor = Color.Yellow
Saludos!
|
|
|
En línea
|
|
|
|
seba123neo
|
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.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.788
|
Pues he probado esto, y ralentiza el proceso sobre un 50% (obviamente cuanto mayor séa el contenido del richtextbox...) 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
|
|
|
En línea
|
|
|
|
Keyen Night
Desconectado
Mensajes: 496
Nothing
|
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.
|
|
|
En línea
|
La Fé Mueve Montañas... ...De Dinero
La programación es más que un trabajo es más que un hobby es una pasión...
|
|
|
seba123neo
|
algo asi: 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.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.788
|
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: 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
|
|
« Última modificación: 27 Noviembre 2012, 14:37 pm por EleKtro H@cker »
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
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!
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.788
|
0 .. lines.length - 1 sería la manera correcta de recorrer el array.
Le tuve que restar una más: 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.
|
|
« Última modificación: 27 Noviembre 2012, 14:53 pm por EleKtro H@cker »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
contar saltos de linea RichTextBox VB
Programación Visual Basic
|
Carlosnuel
|
5
|
12,566
|
6 Abril 2007, 01:55 am
por CeLaYa
|
|
|
[SOLUCIONADO]-[ayuda] funcion cambiar linea al estilo space para dejar espacios
.NET (C#, VB.NET, ASP)
|
faralito
|
3
|
4,610
|
29 Enero 2009, 16:02 pm
por faralito
|
|
|
como cambiar el color de una frase en un batch?? (SOLUCIONADO)
« 1 2 »
Scripting
|
SuperDraco
|
10
|
15,137
|
18 Noviembre 2009, 01:03 am
por SuperDraco
|
|
|
[Ayuda] Cambiar Color De Palabra En RichTextBox Y Que Se Envie Por Winsock
Programación Visual Basic
|
Brian1511
|
4
|
4,362
|
10 Febrero 2015, 22:14 pm
por Brian1511
|
|
|
[VB.NET] ¿Cómo puedo subrayar palabras de cierto color en un RichTextBox?
.NET (C#, VB.NET, ASP)
|
dont'Exist
|
1
|
2,797
|
9 Septiembre 2019, 18:12 pm
por Serapis
|
|