Jump to content

"Pintar" celulas de um datagrid que tenham valores iguais


AFrei

Recommended Posts

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

Link to comment
Share on other 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
Link to comment
Share on other 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.

Knowledge to the masses


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.