none
Função check box no datagridview RRS feed

  • Pergunta

  • Boa tarde pessoal.

    Estou tentando uma instrução no datagridview com checkbox onde ao marcar um item (sendo máximo 3 itens) na lista que vem do banco de dados, o código deste item seja transportado para um txtbox e se for desmarcado o mesmo seja apagado do textbox. Segue abaixo o que eu consegui fazer até agora mais entalei aqui:

    ==============================================================================

     Private Sub dgv1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv1.CellClick

            dgv1.Rows(e.RowIndex).Cells(0).Value = Not _
                dgv1.Rows(e.RowIndex).Cells(0).Value
            For Each dr As DataGridViewRow In dgv1.Rows
                If dr.Cells(0).Value IsNot Nothing Then
                    Dim msg As String
                    Dim title As String
                    Dim style As MsgBoxStyle
                    Dim response As MsgBoxResult
                    'Faz checagem de seleção - se for marcado solicita confirmação
                    If e.ColumnIndex <> 0 Then
                        Exit Sub
                    Else
                        msg = "Confirma a seleção destes objetivos?"   ' Define a mensagem.
                        style = MsgBoxStyle.DefaultButton2 Or
           MsgBoxStyle.Critical Or MsgBoxStyle.YesNo
                        title = "AGE-Programação - Objetivos Pessoais"  ' Define título.
                        ' Display da mensagem.
                        response = MsgBox(msg, style, title)
                        If response = MsgBoxResult.Yes Then   ' O usuário escolheu Sim.
                            ' Executar a ação.
                            For i As Integer = 0 To dgv1.Rows.Count - 1
                                If Convert.ToBoolean(dgv1.Rows(i).Cells(0).Value) Then
                                    mtxtOBJprg1.Text = dgv1.Rows(i).Cells(2).Value.ToString()
                                End If
                                If Convert.ToBoolean(dgv1.Rows(i).Cells(0).Value) Then
                                    mtxtOBJprg2.Text = dgv1.Rows(i).Cells(2).Value.ToString()
                                End If
                                If Convert.ToBoolean(dgv1.Rows(i).Cells(0).Value) Then
                                    mtxtOBJprg3.Text = dgv1.Rows(i).Cells(2).Value.ToString()
                                End If
                            Next
                            MsgBox("Seleção feita com sucesso.", MsgBoxStyle.Information, "INFORME")
                        Else
                            ' Cancelar ação.
                            Exit Sub
                        End If
                    End If
                End If
            Next
        End Sub

    ==============================================================================

    Espero que possam me ajudar.

    Desde já agradeço a atenção.

    Ivo

    quinta-feira, 24 de agosto de 2017 18:50

Respostas

  • Bom dia Ivofb.

    pelo que eu entendi da sua pergunta você pode usar dessa forma:

            For Each item As DataGridViewRow In grid.Rows
                If item.Cells(0).Value Then
                     [seuTextBox] = item.Cells(1).Value
    'substitua [seuTextBox] pelo nome do TextBox
                End If
            Next

    esse trecho de código serve para percorrer a grid e ao encontrar o check box (que no meu caso é a primeira coluna, ou seja 0) marcado vai mandar esse valor para o textBox que você desejar, você pode ainda inserir uma variável global como contador e verificar se a mesma não é maior que 3 antes de executar o for Each, para verificar se foi desmarcado coloque um "Not" após o if.

    Espero ter ajudado.

    quinta-feira, 31 de agosto de 2017 11:40

Todas as Respostas

  • Boa tarde, ivofb. Tudo bem?

    Obrigado por usar o fórum MSDN.

    Essa seria uma questão de "How to/Customização" ou "Break Fix/Erro"?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 25 de agosto de 2017 17:39
    Moderador
  • Olá Filipe!

    customização, pois esses valores selecionados vão para um textbox e depois serão gravados em outra tela em textbox também.

    Obrigado por responder e aguardo ajuda.

    Ivo

    sábado, 26 de agosto de 2017 00:10
  • Bom dia Ivofb.

    pelo que eu entendi da sua pergunta você pode usar dessa forma:

            For Each item As DataGridViewRow In grid.Rows
                If item.Cells(0).Value Then
                     [seuTextBox] = item.Cells(1).Value
    'substitua [seuTextBox] pelo nome do TextBox
                End If
            Next

    esse trecho de código serve para percorrer a grid e ao encontrar o check box (que no meu caso é a primeira coluna, ou seja 0) marcado vai mandar esse valor para o textBox que você desejar, você pode ainda inserir uma variável global como contador e verificar se a mesma não é maior que 3 antes de executar o for Each, para verificar se foi desmarcado coloque um "Not" após o if.

    Espero ter ajudado.

    quinta-feira, 31 de agosto de 2017 11:40
  • Olá Vinicius! Obrigado por seu auxilio. A sua instrução eu já estou usando conforme demonstrei o código acima, mas o meu problema na realidade é que eu marco um checkbox no datagrid ele registra no textbox1, textbox2 e textbox3 ao mesmo tempo, sendo que preciso colocar uma instrução que ao marcar um checkbox será registrado no textbox1, se marcar um segundo checkbox que será registrado no textbox2 e se marcar um terceiro seja registrado no textbox3. caso seja marcado um quarto ou mais, seja enviado uma mensagem que não é possível marcar mais nenhum.

    Não estou conseguindo fazer essa instrução. Caso você ou mais alguém possa me ajudar eu fico agradecido.

    Obrigado

    terça-feira, 5 de setembro de 2017 00:51
  • Boa noite Pessoal!

    Alguém mais pode me ajudar?

    quarta-feira, 13 de setembro de 2017 22:41