RICHTEXTBOX COLORIR LINHA DETERMINADA
Boa tarde. pessoal.
Estou preenchendo uma List<> com os registros de uma tabela, depois eu jogo essa List<> numa RichTextBox.
Por exemplo:
Pois bem, ao [Ô]percorrer[Ô] a List<> para mostrar na RichTextBox, é verificado: se o Tipo do Funcionário for Mensalista, vai exibir a linha na cor vermelha, senão, vai exibir na cor preta.
Do jeito que está nesse código, estou conseguindo mostrar tudo correto, só queria conseguir alterar a cor das linhas.
Será que é possÃvel fazer isso?
Estou preenchendo uma List<> com os registros de uma tabela, depois eu jogo essa List<> numa RichTextBox.
Por exemplo:
List<Funcionario> _lista = new List<Funcionario>(new Funcionario().Get_All());
foreach (var item in _lista)
{
if (item.Tipo == [Ô]Mensalista[Ô])
{
// mostrar a linha em vermelho
}
else
{
// mostrar a linha em preto
}
rtbResultado.Text += item.Nome + [Ô]
[Ô];
}
Pois bem, ao [Ô]percorrer[Ô] a List<> para mostrar na RichTextBox, é verificado: se o Tipo do Funcionário for Mensalista, vai exibir a linha na cor vermelha, senão, vai exibir na cor preta.
Do jeito que está nesse código, estou conseguindo mostrar tudo correto, só queria conseguir alterar a cor das linhas.
Será que é possÃvel fazer isso?
List<Funcionario> _lista = new List<Funcionario>(new Funcionario().Get_All());
int i = 0;
foreach (var item in _lista)
{
rtbResultado.Text += item.Nome + [Ô]
[Ô];
i++;
string linha = rtbResultado.Lines[i];
rtbResultado.Select(rtbResultado.GetFirstCharIndexFromLine(i), linha .Length);
if (item.Tipo == [Ô]Mensalista[Ô])
{
rtbResultado.SelectionColor = Color.Red;
}
else
{
rtbResultado.SelectionColor = Color.Black;
}
}
OBS: Fiz de cabeça aqui, a ideia é mais ou menos por aÃ. Talvez o codigo i++ vai no final do loop. Qualquer coisa, senão for, faça o teste.
Valeu JABA era isso mesmo, apenas que o i++ tem que ficar no final do loop. Muito obrigado.
Agora, se eu tivesse uma linha, por exemplo:
Endereço: Avenida Rio Branco, 33
como faria para procurar se na linha tiver escrito [Ô]Endereço: [Ô] e colorir ou mudar a fonte apenas do que vier após os dois pontos (:) ?
Agora, se eu tivesse uma linha, por exemplo:
Endereço: Avenida Rio Branco, 33
como faria para procurar se na linha tiver escrito [Ô]Endereço: [Ô] e colorir ou mudar a fonte apenas do que vier após os dois pontos (:) ?
//Método para buscar o indice da palavra procurada
public int GetIndice(string texto, string valor)
{
for (int i = 0; i < texto.Length; i++)
{
if (texto.Substring(i, valor.Length) == valor)
return i + valor.Length;
}
return 0;
}
string linha = rtbResultado.Lines[i];
rtbResultado.Select([txt-color=#e80000]GetIndice(linha, [Ô]Endereço:[Ô])[/txt-color], linha .Length);
Valeu, JABA, quando eu ia postar, aà que eu vi que você havia respondido. Muito obrigado mesmo.
Porém eu consegui de outra forma:
Abraços amigão.
Porém eu consegui de outra forma:
// posição inicial
int start = (rtbResultado.GetFirstCharIndexFromLine(n) + linha.LastIndexOf([Ô]:[Ô]) + 1);
// comprimento da linha
int length = linha.Substring(linha.LastIndexOf([Ô]:[Ô]), (linha.Length - (linha.LastIndexOf([Ô]:[Ô])))).Length;
// aqui faz a seleção do texto
rtbResultado.SelectionStart = start;
rtbResultado.SelectionLength = length;
// altera a cor
rtbResultado.SelectionColor = Color.OrangeRed;
Abraços amigão.
Se sua intenção é fazer isso somente para o [Ô]Endereço[Ô], acho melhor fazer como eu coloquei, pois se alguma outra linha tiver os dois pontos por alguma outra razão, ela ganhará outra cor também. Do modo que coloquei ele procura exatamente pela palavra desejada.
Abraços
Abraços
Ok, então vou fazer desse jeito, muito obrigado mais uma vez.
Até mais.
Até mais.
Tópico encerrado , respostas não são mais permitidas