• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

AFrei

"Pintar" celulas de um datagrid que tenham valores iguais

3 mensagens neste tópico

Olá,

Preciso da vossa ajuda para "Pintar" celulas de um datagrid que tenham valores iguais.

Já vi um post aqui no forum parecido mas não é a mesma coisa.

O código que tenho até agora é o seguinte:

.....

Dim iguais As String
        da.Update(ds, "table1")


        For row = 0 To DataGridView1.RowCount - 1
          

            If iguais = DataGridView1.Item(1, row).Value Then

                With Me.DataGridView1.Rows(row).DefaultCellStyle
                    .BackColor = Color.Red


                End With


            End If

            
            iguais = DataGridView1.Item(1, row).Value

        Next

O que este código me faz é pintar as células que tenham valores iguais em celulas seguidas. Se forem celulas com o mesmo valor mas intercaladas já não pinta...

Não é isto que pretendo...alguma ideia?

Obrigado.

AnaF

     

Editado: Adicionado Geshi - Weasel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom dia,

Com o seguinte código consigo colorir os valores repetidos mas apenas o da 1ª célula.

Exemplo, se a 1º celula do datagridview for "3", todos os "3" que existem no datagrid são pintados mas não me pesquisa por valores duplicados nas outras células. Exemplo se a celula 2 tiver o valor "teste", não me pinta todos os outros "teste" que existem.

 

         

iguais = DataGridView1.Item(1, row2).Value
          

          
            For row = 0 To DataGridView1.RowCount - 1



                If iguais = DataGridView1.Item(1, row).Value Then
                
                    With Me.DataGridView1.Rows(row).DefaultCellStyle
                        .BackColor = Color.Red


                    End With

                                  End If

                                Next

Pensei que para resolver a situação um novo For iria funcionar mas pinta-me as celulas todas! Ninguem tem ideias?

     

 For row2 = 0 To DataGridView1.RowCount - 1


            iguais = DataGridView1.Item(1, row2).Value
            Label2.Text = iguais

           

            For row = 0 To DataGridView1.RowCount - 1




                If iguais = DataGridView1.Item(1, row).Value Then
                    

                    With Me.DataGridView1.Rows(row).DefaultCellStyle
                        .BackColor = Color.Red


                    End With

                End If

                              
            Next


        Next

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Terás de fazer algo como:

1º For a precorrer todas as linhas da datagrid, para verificar a celula em questão.

2º dentro do 1º for, um 2º for a precorrer todas as linhas de novo para comparar com a do 1º for, e pinta-as.

Para poupar tempo podes criar um array com as strings já pintadas para caso no 1º for encontre uma já pintada, saltar essa linha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora