none
CLIQUE RÁPIDO NO CHECKBOX DO GRIDVIEW - VB.NET RRS feed

  • Pergunta

  • Boa tarde!

    Tenho uma gridview que retorna informações do banco e na coluna 0 há checkboxes para que o usuário possa marcar as linhas desejadas, quando isso feito ele soma um em uma variável que uso como contador e preenche um textbox e quando desmarco determinado checkbox, ele limpa o textbox correspondente ao que foi preenchido com o determinado valor e subtrai um da variável contador.

    A aplicação funciona normal e faz exatamente o que eu quero, porém acontece uma coisa que me intriga.

    Quando clico de forma rápida no checkbox ele não preenche o textbox e soma um à variável, as vezes ele preenche o textbox, marca o checkbox, mas quando clico logo em seguida ele não apaga o textbox e não subtrai um da variável... Ou seja, ele não faz o que quero apenas quando clico muito rápido no checkbox.

    Alguém sabe o que posso fazer para isso não acontecer ou melhor, se há algo a se fazer ou é só clicar na "moralzinha", tranquilo mesmo? rsrs

    Abraço!


    Obrigado! Felipe Negro

    quarta-feira, 16 de maio de 2012 19:56

Respostas

  • Questão resolvida.

    Criei uma lógica para o evento "CellContentDoubleClick" e não deu mais erro quando clicado duas vezes de maneira rápida no checkbox.

        Private Sub grdviewGrid_CellContentDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
        Handles grdviewGrid.CellContentDoubleClick
    
            If e.ColumnIndex < 0 Then
                Exit Sub
            End If
    
            If grdviewGrid.Rows(e.RowIndex).Cells(e.ColumnIndex).Selected = True And _
            grdviewGrid.Rows(e.RowIndex).Cells(0).Value = False Then
                grdviewGrid.EndEdit()
                grdviewGrid.Rows(e.RowIndex).Cells(0).Value = True
                If CBool(grdviewGrid.Rows(e.RowIndex).Cells(0).Value = True) Then
                    marcandoCheckbox(e)
                End If
            ElseIf grdviewGrid.Rows(e.RowIndex).Cells(e.ColumnIndex).Selected = True And _
            grdviewGrid.Rows(e.RowIndex).Cells(0).Value = True Then
                grdviewGrid.Rows(e.RowIndex).Cells(0).Value = False
                desmarcandoCheckBox(e)
            End If
    
            If n > 0 Then
                btnLimpar.Visible = True
                btnTrocar.Visible = True
            Else
                btnLimpar.Visible = False
                btnTrocar.Visible = False
            End If
    
            If n = 2 Then
                btnUnificar.Visible = True
            Else
                btnUnificar.Visible = False
            End If
        End Sub
    Public Sub marcandoCheckbox(ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
            n += 1
            'Não permite a marcação do 3º checkbox.
            If n > 2 Then
                MessageBox.Show("Não é possível marcar mais que 2 (dois) registros.", "Unificar ChaveSGS", _
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                n -= 1
                grdviewGrid.Rows(e.RowIndex).Cells(0).Value = CheckState.Unchecked
            Else
                cli = grdviewGrid.Rows(e.RowIndex).Cells(1).Value.ToString
                taborigem = grdviewGrid.Rows(e.RowIndex).Cells(2).Value.ToString
                chave = grdviewGrid.Rows(e.RowIndex).Cells(3).Value.ToString
                nome = grdviewGrid.Rows(e.RowIndex).Cells(4).Value.ToString
                dtnasc = grdviewGrid.Rows(e.RowIndex).Cells(5).Value
                sexo = grdviewGrid.Rows(e.RowIndex).Cells(6).Value.ToString
    
                preencheTextBox(chave, nome, e)
                guardaVariaveis(e)
            End If
        End Sub
        Public Sub desmarcandoCheckBox(ByVal e As Windows.Forms.DataGridViewCellEventArgs)
    
            n -= 1
            chave = grdviewGrid.Rows(e.RowIndex).Cells(3).Value
            limpaTextBox(chave, e)
    
        End Sub



    Obrigado! Felipe Negro

    • Marcado como Resposta felipernegro terça-feira, 29 de maio de 2012 13:49
    terça-feira, 29 de maio de 2012 13:49

Todas as Respostas

  • qual o evento k usas?

    mouse leave or click?


    O Amor que Sinto por Ti, Apenas Deus e capaz de sentir e superar tal amor!

    sábado, 19 de maio de 2012 12:52
    Moderador
  • Bom dia.

    Estou usando o evento CellContentClick do GridView.


    Obrigado! Felipe Negro

    segunda-feira, 21 de maio de 2012 12:27
  • Questão resolvida.

    Criei uma lógica para o evento "CellContentDoubleClick" e não deu mais erro quando clicado duas vezes de maneira rápida no checkbox.

        Private Sub grdviewGrid_CellContentDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
        Handles grdviewGrid.CellContentDoubleClick
    
            If e.ColumnIndex < 0 Then
                Exit Sub
            End If
    
            If grdviewGrid.Rows(e.RowIndex).Cells(e.ColumnIndex).Selected = True And _
            grdviewGrid.Rows(e.RowIndex).Cells(0).Value = False Then
                grdviewGrid.EndEdit()
                grdviewGrid.Rows(e.RowIndex).Cells(0).Value = True
                If CBool(grdviewGrid.Rows(e.RowIndex).Cells(0).Value = True) Then
                    marcandoCheckbox(e)
                End If
            ElseIf grdviewGrid.Rows(e.RowIndex).Cells(e.ColumnIndex).Selected = True And _
            grdviewGrid.Rows(e.RowIndex).Cells(0).Value = True Then
                grdviewGrid.Rows(e.RowIndex).Cells(0).Value = False
                desmarcandoCheckBox(e)
            End If
    
            If n > 0 Then
                btnLimpar.Visible = True
                btnTrocar.Visible = True
            Else
                btnLimpar.Visible = False
                btnTrocar.Visible = False
            End If
    
            If n = 2 Then
                btnUnificar.Visible = True
            Else
                btnUnificar.Visible = False
            End If
        End Sub
    Public Sub marcandoCheckbox(ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
            n += 1
            'Não permite a marcação do 3º checkbox.
            If n > 2 Then
                MessageBox.Show("Não é possível marcar mais que 2 (dois) registros.", "Unificar ChaveSGS", _
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                n -= 1
                grdviewGrid.Rows(e.RowIndex).Cells(0).Value = CheckState.Unchecked
            Else
                cli = grdviewGrid.Rows(e.RowIndex).Cells(1).Value.ToString
                taborigem = grdviewGrid.Rows(e.RowIndex).Cells(2).Value.ToString
                chave = grdviewGrid.Rows(e.RowIndex).Cells(3).Value.ToString
                nome = grdviewGrid.Rows(e.RowIndex).Cells(4).Value.ToString
                dtnasc = grdviewGrid.Rows(e.RowIndex).Cells(5).Value
                sexo = grdviewGrid.Rows(e.RowIndex).Cells(6).Value.ToString
    
                preencheTextBox(chave, nome, e)
                guardaVariaveis(e)
            End If
        End Sub
        Public Sub desmarcandoCheckBox(ByVal e As Windows.Forms.DataGridViewCellEventArgs)
    
            n -= 1
            chave = grdviewGrid.Rows(e.RowIndex).Cells(3).Value
            limpaTextBox(chave, e)
    
        End Sub



    Obrigado! Felipe Negro

    • Marcado como Resposta felipernegro terça-feira, 29 de maio de 2012 13:49
    terça-feira, 29 de maio de 2012 13:49