none
Propriedades Checkbox (Salvar estado) RRS feed

  • Pergunta

  • Boa tarde pessoal,

    Estou trabalhando com checkbox e gostaria de saber se alguém poderia me ajudar a respeito de salvar seu estado (conforme seja marcado), e também como fazer no caso em que só 1 (de 2 ou mais) checkbox possa ser marcado (evento onde um checkbox "true" anula a possibilidade de outro checkbox "true").

    Segue uma tela do meu projeto para melhor entendimento.

    Grata.

    quarta-feira, 26 de agosto de 2015 18:56

Respostas

  • Boa tarde.

    Para recuperar os checkbox selecionados, no evento do botão salvar faça:

    for (int i = 0; i < IdCheckBox.Items.Count; ++i)
            {
                if (IdCheckBox.Items[i].Selected)
                {
                    //Só entrará nesse if os checkbox selecionados
                }
            }

    Caso você queira fazer em tempo de execução ao invés de no evento do botão salvar, utilize o código acima no evento CheckedChanged do CheckBox.

    Quanto a restringir a seleção de apenas 1 item, você pode utilizar o RabioButton que se enquadra melhor para essa necessidade.

    Espero ter ajudado.


    Wesley Lisboa


    • Editado Wesley Lisboa quarta-feira, 26 de agosto de 2015 19:11
    • Marcado como Resposta mariannagonca quinta-feira, 27 de agosto de 2015 13:33
    quarta-feira, 26 de agosto de 2015 19:10
  • Boa noite 

    mariannagonca

    Então, no caso de seleção unica, por que não usar Radio Buttons?

    Caso não seja possível usar Radio Buttons, você pode fazer uma variável de controle para verificar se algum Check está selecionado, tipo:

    selecionado = false;

    Ai no evento de seleção você verifica:

    if(!isChecked && !selecionado)
    {
        selecionado = true;
        isChecked = true;
    }
    else if (isChecked)
    {
       selecionado = false;
       isChecked = false;
    }
    else
    {
      return;
    }

    Isso é apenas um exemplo, a lógica você terá de desenvolver.

    Outro detalhe é quanto ao armazenamento.

    Esse controladores funcionam em estados booleanos, Verdadeiro ou Falso ou 0 e 1.

    Para salvar no banco de dados, crie um campo booleano q receba esses valores, e no momento do armazenamento coloque como um valor de verdadeiro ou falso.

    Espero ter ajudado.


    • Marcado como Resposta mariannagonca quinta-feira, 27 de agosto de 2015 13:33
    quarta-feira, 26 de agosto de 2015 22:37

Todas as Respostas

  • Boa tarde.

    Para recuperar os checkbox selecionados, no evento do botão salvar faça:

    for (int i = 0; i < IdCheckBox.Items.Count; ++i)
            {
                if (IdCheckBox.Items[i].Selected)
                {
                    //Só entrará nesse if os checkbox selecionados
                }
            }

    Caso você queira fazer em tempo de execução ao invés de no evento do botão salvar, utilize o código acima no evento CheckedChanged do CheckBox.

    Quanto a restringir a seleção de apenas 1 item, você pode utilizar o RabioButton que se enquadra melhor para essa necessidade.

    Espero ter ajudado.


    Wesley Lisboa


    • Editado Wesley Lisboa quarta-feira, 26 de agosto de 2015 19:11
    • Marcado como Resposta mariannagonca quinta-feira, 27 de agosto de 2015 13:33
    quarta-feira, 26 de agosto de 2015 19:10
  • Boa noite 

    mariannagonca

    Então, no caso de seleção unica, por que não usar Radio Buttons?

    Caso não seja possível usar Radio Buttons, você pode fazer uma variável de controle para verificar se algum Check está selecionado, tipo:

    selecionado = false;

    Ai no evento de seleção você verifica:

    if(!isChecked && !selecionado)
    {
        selecionado = true;
        isChecked = true;
    }
    else if (isChecked)
    {
       selecionado = false;
       isChecked = false;
    }
    else
    {
      return;
    }

    Isso é apenas um exemplo, a lógica você terá de desenvolver.

    Outro detalhe é quanto ao armazenamento.

    Esse controladores funcionam em estados booleanos, Verdadeiro ou Falso ou 0 e 1.

    Para salvar no banco de dados, crie um campo booleano q receba esses valores, e no momento do armazenamento coloque como um valor de verdadeiro ou falso.

    Espero ter ajudado.


    • Marcado como Resposta mariannagonca quinta-feira, 27 de agosto de 2015 13:33
    quarta-feira, 26 de agosto de 2015 22:37
  • Wesley, bom dia!

    O checkbox não recebe a propriedade "Items", então qual seria a extensão adequada?

    Grata.

    • Marcado como Resposta mariannagonca quinta-feira, 27 de agosto de 2015 13:33
    • Não Marcado como Resposta mariannagonca quinta-feira, 27 de agosto de 2015 13:33
    quinta-feira, 27 de agosto de 2015 13:32
  • Maicon,

    Bom dia, tentarei usar o radio button, caso não atenda as minhas necessidades usarei sua lógica!

    Obrigada!

    quinta-feira, 27 de agosto de 2015 13:33
  • Maicon, o problema de usar radio button é que eu só poderia marcar 1 como "true" por tela, e no caso, preciso marcar mais de um..
    quinta-feira, 27 de agosto de 2015 14:10
  • Wesley, bom dia!

    O checkbox não recebe a propriedade "Items", então qual seria a extensão adequada?

    Grata.

    Bom dia.

    O motivo provável é que você criou CheckBox independentes como por exemplo  em seu campo vacinação, o ideal é utilizar o CheckedListBox que agrupa os CheckBox facilitando na hora de extrair as informações, segue exemplo com documentação(inclusive de como recuperar os CheckBox selecionados):

    https://msdn.microsoft.com/pt-br/library/system.windows.forms.checkedlistbox.checkeditems(v=vs.110).aspx

    Caso você opte por deixar como CheckBox separados utilize a forma que o Maicon enviou.

    Espero ter ajudado.


    Wesley Lisboa

    quinta-feira, 27 de agosto de 2015 14:15
  • Se Você estiver usando WPF, você pode usar paineis  para receber cada grupo de Radio.

    Windows forms nunca tentei, mas deve seguir o mesmo padrão.

    Ex.

    <Stackpanel orientation="Horizontal" Name="Painel1">
      <RadioButton />
      <RadioButton />
    </Stackpanel>
    <Stackpanel orientation="Horizontal" Name="Painel2">
      <RadioButton />
      <RadioButton />
    </Stackpanel>
    Isso dentro da mesma tela.
    quinta-feira, 27 de agosto de 2015 17:34