none
Salvar seleção CheckBox RRS feed

  • Pergunta

  • Olá pessoal, sou iniciante em Visual Basic.NET e estou com uma dúvida, tenho em um form alguns checkbox, como faço para quando o usuário selecionar alguns deles, e ao clicar em OK, salve um arquivo txt informando se o checkbox foi ou não selecionado, exemplo.

    CheckBox1 = True
    CheckBox2 = False

    Obrigado.

    Abraços.

    terça-feira, 10 de julho de 2012 17:19

Respostas

  • Guilherme vc pode fazer assim

    StreamWriter arquivoUsuario = new StreamWriter(nomeArquivo, true, System.Text.Encoding.Default); 
    
    dim linha as string
    
    linha = checkbox1.checked
    linha += checkbox2.checked
    


    Junior

    terça-feira, 10 de julho de 2012 18:53
  • Uma forma é assim:

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim fluxoTexto As IO.StreamWriter
            Dim Data As String = Today.Now & vbCrLf

            fluxoTexto = New IO.StreamWriter("C:\config.txt", True)
            fluxoTexto.WriteLine(Data & "Checkbox1 = " & CheckBox1.Checked & vbCrLf & "Checkbox2 = " & CheckBox2.Checked)
            fluxoTexto.Close()
        End Sub

    A saída no arquivo ficará assim por exemplo:

    10/07/2012 15:59:57
    Checkbox1 = True
    Checkbox2 = True

    terça-feira, 10 de julho de 2012 19:00
  • Bom....

    Uma boa pratica é varrer todos os controles do form que sejam um checkbox e ver seu status.

    Da forma que os colegas passaram tambem estão certo,mas aqui vou passar uma forma bem dinamica,pra caso voce adicionar mais checkbox,nao precisa nem mexer no codigo: segue

     Sub salva()
            Dim controle As Control
            Dim fluxoTexto As IO.StreamWriter
            Try
                If (IO.File.Exists("C:\texto.txt") = False) Then
                    IO.File.Create("C:\texto.txt")
                End If
    
                fluxoTexto = New IO.StreamWriter("C:\texto.txt", True)
                For Each controle In Me.Controls
                    Dim check As CheckBox
                    If (TypeOf controle Is CheckBox) Then
                        check = CType(controle, CheckBox)
                        fluxoTexto.WriteLine(check.Name & " = " & check.CheckState)
                    End If
                Next
                fluxoTexto.Close()
            Catch ex As Exception
                MsgBox(Err.Description)
            End Try
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            salva()
        End Sub

    Assim vai ficar desta maneira:

    CheckBox2 = 1
    CheckBox1 = 0

    Para que seja True ou False voce altera a linha:

    fluxoTexto.WriteLine(check.Name & " = " & check.CheckState)

    Para:

    fluxoTexto.WriteLine(check.Name & " = " & check.Checked)
    CheckBox2 = True
    CheckBox1 = False


    Microsoft Technology Associate (MTA)


    terça-feira, 10 de julho de 2012 21:53

Todas as Respostas

  • Guilherme vc pode fazer assim

    StreamWriter arquivoUsuario = new StreamWriter(nomeArquivo, true, System.Text.Encoding.Default); 
    
    dim linha as string
    
    linha = checkbox1.checked
    linha += checkbox2.checked
    


    Junior

    terça-feira, 10 de julho de 2012 18:53
  • Uma forma é assim:

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim fluxoTexto As IO.StreamWriter
            Dim Data As String = Today.Now & vbCrLf

            fluxoTexto = New IO.StreamWriter("C:\config.txt", True)
            fluxoTexto.WriteLine(Data & "Checkbox1 = " & CheckBox1.Checked & vbCrLf & "Checkbox2 = " & CheckBox2.Checked)
            fluxoTexto.Close()
        End Sub

    A saída no arquivo ficará assim por exemplo:

    10/07/2012 15:59:57
    Checkbox1 = True
    Checkbox2 = True

    terça-feira, 10 de julho de 2012 19:00
  • Bom....

    Uma boa pratica é varrer todos os controles do form que sejam um checkbox e ver seu status.

    Da forma que os colegas passaram tambem estão certo,mas aqui vou passar uma forma bem dinamica,pra caso voce adicionar mais checkbox,nao precisa nem mexer no codigo: segue

     Sub salva()
            Dim controle As Control
            Dim fluxoTexto As IO.StreamWriter
            Try
                If (IO.File.Exists("C:\texto.txt") = False) Then
                    IO.File.Create("C:\texto.txt")
                End If
    
                fluxoTexto = New IO.StreamWriter("C:\texto.txt", True)
                For Each controle In Me.Controls
                    Dim check As CheckBox
                    If (TypeOf controle Is CheckBox) Then
                        check = CType(controle, CheckBox)
                        fluxoTexto.WriteLine(check.Name & " = " & check.CheckState)
                    End If
                Next
                fluxoTexto.Close()
            Catch ex As Exception
                MsgBox(Err.Description)
            End Try
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            salva()
        End Sub

    Assim vai ficar desta maneira:

    CheckBox2 = 1
    CheckBox1 = 0

    Para que seja True ou False voce altera a linha:

    fluxoTexto.WriteLine(check.Name & " = " & check.CheckState)

    Para:

    fluxoTexto.WriteLine(check.Name & " = " & check.Checked)
    CheckBox2 = True
    CheckBox1 = False


    Microsoft Technology Associate (MTA)


    terça-feira, 10 de julho de 2012 21:53
  • Pessoal, muito obrigado deu certo aqui, porém como faço para ele escrever no arquivo, porém quando for abrir o programa novamente e escrever novamente os valores, ele exclua os anteriores criados no txt ? 


    Abraços a todos, e obrigado pela ajuda.
    quarta-feira, 11 de julho de 2012 16:24
  • If (IO.File.Exists("C:\texto.txt")) Then
      IO.File.Delete("C:\texto.txt")
    End If

    Caso o arquivo exista ele exclue,e cria um novo com:

    IO.file.Create("C:\texto.txt")


    Microsoft Technology Associate (MTA)


    • Editado Eduardo xUni quarta-feira, 11 de julho de 2012 16:30
    • Sugerido como Resposta Eduardo xUni sexta-feira, 20 de julho de 2012 11:23
    quarta-feira, 11 de julho de 2012 16:28