none
Como salvar um Label que muda e a sua condição durante o uso do aplicativo? RRS feed

  • Pergunta

  • Olá Amigos do MSDN. Desenvolvi um aplicativo e nele instalei uma rotina que salva seus dados em um arquivo texto.  Até agora está funcionando perfeitamente. Pois bem, resolvi incluir no aplicativo 28 Label's sendo que 14 tem no seu Text a letra D e os outros 14 tem a letra S, são as iniciais de S Sábado e D Domingo. Destes 28 Label's ficam aparecendo apenas 14 e os outros 14 ficam sob os outros 14, ou seja, eles estão sob as mesmas coordenadas no formulário. Clicando com mouse sobre qualquer um dos 14 Label's que aparecem, inclui na rotina sender.SendtoBack, eles invertem, variando entre o S e o D. Até aqui tudo funciona bem. A minha pergunta vem justamente do fato que quando vou salvar o aplicativo, existirão alguns Label's que estão como S e outros como D, então preciso salvar exatamente a configuração que os Label's ficaram e não sei como salva-los. Alguém pode me dar uma força com isso?

    Grato/Durval

     
    domingo, 19 de novembro de 2017 18:02

Respostas

  • Olá. Consegui resolver fazendo o seguinte: Ao invés de 28 Label's, mudei para 14 Label's e mudei a forma de alterar de S para D via rotina, o que antes eram 28 Label's pré-definidos nas configurações, agora são apenas 14 que mudo de S para D via rotina e deu tudo certo.

    Grato/Durval

    segunda-feira, 20 de novembro de 2017 04:20

Todas as Respostas

  • Olá Durval,

    Uma pequena sugestão, você poderia usar a propriedade Tag do Label e numerar a sequencia, e depois salvar pela sequencia desejada:

    var labels
        = from n in Controls.OfType<Label>().ToList() 
          orderby int.Parse(n.Tag.ToString())
          select n;

    Abraços!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    domingo, 19 de novembro de 2017 23:08
  • Boa noite, Durval

    É meio pre-histórico, mas veja se ajuda:

    Private Sub salvar_dias()
            Dim Str_Dias As String = Label1.Text & Label2.Text & Label3.Text & Label4.Text & Label5.Text & Label6.Text & Label7.Text & _
                              Label8.Text & Label9.Text & Label10.Text & Label11.Text & Label12.Text & Label13.Text & Label14.Text & _
                              Label15.Text & Label16.Text & Label17.Text & Label18.Text & Label19.Text & Label20.Text & Label21.Text & _
                              Label22.Text & Label23.Text & Label24.Text & Label25.Text & Label26.Text & Label27.Text & Label28.Text

            
            Dim fluxoTexto As IO.StreamWriter
            Dim Arquivo As String = "arquivo_dias_label.txt"

           
            If Arquivo = Nothing Then
                MessageBox.Show("Arquivo Invalido", "Salvar Como", MessageBoxButtons.OK)
            Else
                fluxoTexto = New IO.StreamWriter(Arquivo)
                fluxoTexto.Write(Str_Dias)
                fluxoTexto.Close()
            End If


        End Sub

        Private Sub ler_dias()
            Dim fluxoTexto As IO.StreamReader
            Dim linhaTexto As String

            If IO.File.Exists("arquivo_dias_label.txt") Then
                fluxoTexto = New IO.StreamReader("arquivo_dias_label.txt")
                linhaTexto = fluxoTexto.ReadLine
                Dim Str_Leitura As String = ""


                While linhaTexto <> Nothing
                    Str_Leitura &= linhaTexto & vbCrLf
                    linhaTexto = fluxoTexto.ReadLine
                End While
                fluxoTexto.Close()


                Label1.Text = Str_Leitura.Substring(0, 1)
                Label2.Text = Str_Leitura.Substring(1, 1)
                Label3.Text = Str_Leitura.Substring(2, 1)
                Label4.Text = Str_Leitura.Substring(3, 1)
                Label5.Text = Str_Leitura.Substring(4, 1)
                Label6.Text = Str_Leitura.Substring(5, 1)
                Label7.Text = Str_Leitura.Substring(6, 1)
                Label8.Text = Str_Leitura.Substring(7, 1)
                Label9.Text = Str_Leitura.Substring(8, 1)
                Label10.Text = Str_Leitura.Substring(9, 1)
                Label11.Text = Str_Leitura.Substring(10, 1)
                Label12.Text = Str_Leitura.Substring(11, 1)
                Label13.Text = Str_Leitura.Substring(12, 1)
                Label14.Text = Str_Leitura.Substring(13, 1)

                Label15.Text = Str_Leitura.Substring(14, 1)
                Label16.Text = Str_Leitura.Substring(15, 1)
                Label17.Text = Str_Leitura.Substring(16, 1)
                Label18.Text = Str_Leitura.Substring(17, 1)
                Label19.Text = Str_Leitura.Substring(18, 1)
                Label20.Text = Str_Leitura.Substring(19, 1)
                Label21.Text = Str_Leitura.Substring(20, 1)
                Label22.Text = Str_Leitura.Substring(21, 1)
                Label23.Text = Str_Leitura.Substring(22, 1)
                Label24.Text = Str_Leitura.Substring(23, 1)
                Label25.Text = Str_Leitura.Substring(24, 1)
                Label26.Text = Str_Leitura.Substring(25, 1)
                Label27.Text = Str_Leitura.Substring(26, 1)
                Label28.Text = Str_Leitura.Substring(27, 1)

            Else
                MessageBox.Show("Arquivo não existe")
            End If
        End Sub

        Private Sub Bu_Salvar_Click(sender As System.Object, e As System.EventArgs) Handles Bu_Salvar.Click
            salvar_dias()
        End Sub

        Private Sub Bu_Ler_Click(sender As System.Object, e As System.EventArgs) Handles Bu_Ler.Click
            ler_dias()
        End Sub


    MARIANO1776

    segunda-feira, 20 de novembro de 2017 00:11
  • Olá Rafael, obrigado por me responder. Rafael, eu transformei os 28 label's num array fazendo assim:

    Dim labelSD = New Label() {Label1, Label2....label 28 } Ai salvo eles num arquivo texto, assim:

    For u=0 To 27

         W.Wrait(labelSD(u)).Text

    Next

    Beleza, dá certinho, mas o meu problema ainda não consegui resolver. 

    O problema que ainda não consegui resolver é a configuração entre os S e os D. A minha rotina acima salva legal, mas ao carregar o arquivo texto para o aplicativo, não volta a mesma configuração que estava quando salvei. Por exemplo, quando salvei estava S, D, D, D, S, etc..(até 14) Ai quando carrego o arquivo texto não volta esta mesma configuração, por exemplo, volta D, D, S, D...

    Ainda não estou sabendo como salvar a configuração que esta no momento de salvar.

    Grato / Durval

    segunda-feira, 20 de novembro de 2017 02:26
  • Obrigado por responder Mariano. Ainda não testei essa sua rotina, mas se você der uma lida no que escrevi acima, talvez possa entender onde está minha dúvida. Olhando a tua rotina, me parece que ela salva os Label's, beleza, a rotina que tenho também está salvando legal, mas como escrevi acima, meu problema é salvar a configuração atual que está no formulário e não simplesmente salvar.

    Vou dar um exemplo: Digamos que a configuração ao salvar seja essa: D, D, D, S, D, D, S, S até 14.

    Pois bem, quando carrego o arquivo, quero que volte essa mesma configuração, e isso não acontece simplesmente salvando, tem que haver alguma forma de perguntar, antes de salvar se o Label1 está por cima ou o Label2 está por cima, talvez seja algo do tipo: If Label1.SendtoBack = True Then então salve, sei lá......

    Abraço/Durval

    segunda-feira, 20 de novembro de 2017 02:39
  • Olá. Consegui resolver fazendo o seguinte: Ao invés de 28 Label's, mudei para 14 Label's e mudei a forma de alterar de S para D via rotina, o que antes eram 28 Label's pré-definidos nas configurações, agora são apenas 14 que mudo de S para D via rotina e deu tudo certo.

    Grato/Durval

    segunda-feira, 20 de novembro de 2017 04:20
  • Bom dia.

    Vejo que resolveu de outra maneira e bem mais simples.

    Certa vez precisei fazer como você queria, somente que escondendo um botão atrás de outro.

    Eu utilizei a propriedade visible dos botoes de modo que um fica visível e outro invisível.

    Caso alguém se interesse pela ideia, segue código com as 28 labels, como pretendido originalmente

           

    Private Sub salvar_dias()
            Dim Str_Dias As String = Label1.Text & Label2.Text & Label3.Text & Label4.Text & Label5.Text & Label6.Text & Label7.Text & _
                              Label8.Text & Label9.Text & Label10.Text & Label11.Text & Label12.Text & Label13.Text & Label14.Text & _
                              Label15.Text & Label16.Text & Label17.Text & Label18.Text & Label19.Text & Label20.Text & Label21.Text & _
                              Label22.Text & Label23.Text & Label24.Text & Label25.Text & Label26.Text & Label27.Text & Label28.Text


            If Label1.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label2.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label3.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label4.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label5.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label6.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label7.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label8.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label9.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label10.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label11.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label12.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label13.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label14.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label15.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label16.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label17.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label18.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label19.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label20.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label21.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label22.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label23.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label24.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label25.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label26.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label27.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"
            If Label28.Visible = False Then Str_Dias &= "F" Else Str_Dias &= "T"


            Dim fluxoTexto As IO.StreamWriter
            Dim Arquivo As String = "arquivo_dias_label.txt"


            If Arquivo = Nothing Then
                MessageBox.Show("Arquivo Invalido", "Salvar Como", MessageBoxButtons.OK)
            Else
                fluxoTexto = New IO.StreamWriter(Arquivo)
                fluxoTexto.Write(Str_Dias)
                fluxoTexto.Close()
            End If


        End Sub

    Private Sub ler_dias()
            Dim fluxoTexto As IO.StreamReader
            Dim linhaTexto As String

            If IO.File.Exists("arquivo_dias_label.txt") Then
                fluxoTexto = New IO.StreamReader("arquivo_dias_label.txt")
                linhaTexto = fluxoTexto.ReadLine
                Dim Str_Leitura As String = ""


                While linhaTexto <> Nothing
                    Str_Leitura &= linhaTexto & vbCrLf
                    linhaTexto = fluxoTexto.ReadLine
                End While
                fluxoTexto.Close()


                Label1.Text = Str_Leitura.Substring(0, 1)
                Label2.Text = Str_Leitura.Substring(1, 1)
                Label3.Text = Str_Leitura.Substring(2, 1)
                Label4.Text = Str_Leitura.Substring(3, 1)
                Label5.Text = Str_Leitura.Substring(4, 1)
                Label6.Text = Str_Leitura.Substring(5, 1)
                Label7.Text = Str_Leitura.Substring(6, 1)
                Label8.Text = Str_Leitura.Substring(7, 1)
                Label9.Text = Str_Leitura.Substring(8, 1)
                Label10.Text = Str_Leitura.Substring(9, 1)
                Label11.Text = Str_Leitura.Substring(10, 1)
                Label12.Text = Str_Leitura.Substring(11, 1)
                Label13.Text = Str_Leitura.Substring(12, 1)
                Label14.Text = Str_Leitura.Substring(13, 1)

                Label15.Text = Str_Leitura.Substring(14, 1)
                Label16.Text = Str_Leitura.Substring(15, 1)
                Label17.Text = Str_Leitura.Substring(16, 1)
                Label18.Text = Str_Leitura.Substring(17, 1)
                Label19.Text = Str_Leitura.Substring(18, 1)
                Label20.Text = Str_Leitura.Substring(19, 1)
                Label21.Text = Str_Leitura.Substring(20, 1)
                Label22.Text = Str_Leitura.Substring(21, 1)
                Label23.Text = Str_Leitura.Substring(22, 1)
                Label24.Text = Str_Leitura.Substring(23, 1)
                Label25.Text = Str_Leitura.Substring(24, 1)
                Label26.Text = Str_Leitura.Substring(25, 1)
                Label27.Text = Str_Leitura.Substring(26, 1)
                Label28.Text = Str_Leitura.Substring(27, 1)

                If Str_Leitura.Substring(28, 1) = "F" Then Label1.Visible = False Else Label1.Visible = True
                If Str_Leitura.Substring(29, 1) = "F" Then Label2.Visible = False Else Label2.Visible = True
                If Str_Leitura.Substring(30, 1) = "F" Then Label3.Visible = False Else Label3.Visible = True
                If Str_Leitura.Substring(31, 1) = "F" Then Label4.Visible = False Else Label4.Visible = True
                If Str_Leitura.Substring(32, 1) = "F" Then Label5.Visible = False Else Label5.Visible = True
                If Str_Leitura.Substring(33, 1) = "F" Then Label6.Visible = False Else Label6.Visible = True
                If Str_Leitura.Substring(34, 1) = "F" Then Label7.Visible = False Else Label7.Visible = True
                If Str_Leitura.Substring(35, 1) = "F" Then Label8.Visible = False Else Label8.Visible = True
                If Str_Leitura.Substring(36, 1) = "F" Then Label9.Visible = False Else Label9.Visible = True
                If Str_Leitura.Substring(37, 1) = "F" Then Label10.Visible = False Else Label10.Visible = True
                If Str_Leitura.Substring(38, 1) = "F" Then Label11.Visible = False Else Label11.Visible = True
                If Str_Leitura.Substring(39, 1) = "F" Then Label12.Visible = False Else Label12.Visible = True
                If Str_Leitura.Substring(40, 1) = "F" Then Label13.Visible = False Else Label13.Visible = True
                If Str_Leitura.Substring(41, 1) = "F" Then Label14.Visible = False Else Label14.Visible = True
                If Str_Leitura.Substring(42, 1) = "F" Then Label15.Visible = False Else Label15.Visible = True
                If Str_Leitura.Substring(43, 1) = "F" Then Label16.Visible = False Else Label16.Visible = True
                If Str_Leitura.Substring(44, 1) = "F" Then Label17.Visible = False Else Label17.Visible = True
                If Str_Leitura.Substring(45, 1) = "F" Then Label18.Visible = False Else Label18.Visible = True
                If Str_Leitura.Substring(46, 1) = "F" Then Label19.Visible = False Else Label19.Visible = True
                If Str_Leitura.Substring(47, 1) = "F" Then Label20.Visible = False Else Label20.Visible = True
                If Str_Leitura.Substring(48, 1) = "F" Then Label21.Visible = False Else Label21.Visible = True
                If Str_Leitura.Substring(49, 1) = "F" Then Label22.Visible = False Else Label22.Visible = True
                If Str_Leitura.Substring(50, 1) = "F" Then Label23.Visible = False Else Label23.Visible = True
                If Str_Leitura.Substring(51, 1) = "F" Then Label24.Visible = False Else Label24.Visible = True
                If Str_Leitura.Substring(52, 1) = "F" Then Label25.Visible = False Else Label25.Visible = True
                If Str_Leitura.Substring(53, 1) = "F" Then Label26.Visible = False Else Label26.Visible = True
                If Str_Leitura.Substring(54, 1) = "F" Then Label27.Visible = False Else Label27.Visible = True
                If Str_Leitura.Substring(55, 1) = "F" Then Label28.Visible = False Else Label28.Visible = True

            Else
                MessageBox.Show("Arquivo não existe")
            End If
        End Sub

        Private Sub Bu_Salvar_Click(sender As System.Object, e As System.EventArgs) Handles Bu_Salvar.Click
            salvar_dias()
        End Sub

        Private Sub Bu_Ler_Click(sender As System.Object, e As System.EventArgs) Handles Bu_Ler.Click
            ler_dias()
        End Sub

    Private Sub Label1_Click(sender As System.Object, e As System.EventArgs) Handles Label1.Click, Label15.Click
            If Label1.Visible = True Then
                Label1.Visible = False
                Label15.Visible = True
            Else
                Label1.Visible = True
                Label15.Visible = False
            End If
        End Sub

        Private Sub Label2_Click(sender As System.Object, e As System.EventArgs) Handles Label2.Click, Label16.Click
            If Label2.Visible = True Then
                Label2.Visible = False
                Label16.Visible = True
            Else
                Label2.Visible = True
                Label16.Visible = False
            End If
        End Sub


        Private Sub Label3_Click(sender As System.Object, e As System.EventArgs) Handles Label3.Click, Label17.Click
            If Label3.Visible = True Then
                Label3.Visible = False
                Label17.Visible = True
            Else
                Label3.Visible = True
                Label17.Visible = False
            End If
        End Sub

        Private Sub Label4_Click(sender As System.Object, e As System.EventArgs) Handles Label4.Click, Label18.Click
            If Label4.Visible = True Then
                Label4.Visible = False
                Label18.Visible = True
            Else
                Label4.Visible = True
                Label18.Visible = False
            End If
        End Sub

        Private Sub Label5_Click(sender As System.Object, e As System.EventArgs) Handles Label5.Click, Label19.Click
            If Label5.Visible = True Then
                Label5.Visible = False
                Label19.Visible = True
            Else
                Label5.Visible = True
                Label19.Visible = False
            End If
        End Sub

        Private Sub Label6_Click(sender As System.Object, e As System.EventArgs) Handles Label6.Click, Label20.Click
            If Label6.Visible = True Then
                Label6.Visible = False
                Label20.Visible = True
            Else
                Label6.Visible = True
                Label20.Visible = False
            End If
        End Sub

        Private Sub Label7_Click(sender As System.Object, e As System.EventArgs) Handles Label7.Click, Label21.Click
            If Label7.Visible = True Then
                Label7.Visible = False
                Label21.Visible = True
            Else
                Label7.Visible = True
                Label21.Visible = False
            End If
        End Sub

        Private Sub Label8_Click(sender As System.Object, e As System.EventArgs) Handles Label8.Click, Label22.Click
            If Label8.Visible = True Then
                Label8.Visible = False
                Label22.Visible = True
            Else
                Label8.Visible = True
                Label22.Visible = False
            End If
        End Sub

        Private Sub Label9_Click(sender As System.Object, e As System.EventArgs) Handles Label9.Click, Label23.Click
            If Label9.Visible = True Then
                Label9.Visible = False
                Label23.Visible = True
            Else
                Label9.Visible = True
                Label23.Visible = False
            End If
        End Sub

        Private Sub Label10_Click(sender As System.Object, e As System.EventArgs) Handles Label10.Click, Label24.Click
            If Label10.Visible = True Then
                Label10.Visible = False
                Label24.Visible = True
            Else
                Label10.Visible = True
                Label24.Visible = False
            End If
        End Sub

        Private Sub Label11_Click(sender As System.Object, e As System.EventArgs) Handles Label11.Click, Label25.Click
            If Label11.Visible = True Then
                Label11.Visible = False
                Label25.Visible = True
            Else
                Label11.Visible = True
                Label25.Visible = False
            End If
        End Sub

        Private Sub Label12_Click(sender As System.Object, e As System.EventArgs) Handles Label12.Click, Label26.Click
            If Label12.Visible = True Then
                Label12.Visible = False
                Label26.Visible = True
            Else
                Label12.Visible = True
                Label26.Visible = False
            End If
        End Sub

        Private Sub Label13_Click(sender As System.Object, e As System.EventArgs) Handles Label13.Click, Label27.Click
            If Label13.Visible = True Then
                Label13.Visible = False
                Label27.Visible = True
            Else
                Label13.Visible = True
                Label27.Visible = False
            End If
        End Sub

        Private Sub Label14_Click(sender As System.Object, e As System.EventArgs) Handles Label14.Click, Label28.Click
            If Label14.Visible = True Then
                Label14.Visible = False
                Label28.Visible = True
            Else
                Label14.Visible = True
                Label28.Visible = False
            End If
        End Sub


    MARIANO1776

    • Sugerido como Resposta Mariano1776 segunda-feira, 20 de novembro de 2017 10:03
    segunda-feira, 20 de novembro de 2017 09:59
  • Valeu Mariano, obrigado pelo seu interesse. Se um dia precisar de informações e eu souber responder, com certeza terás minhas respostas. 

    Grato/Durval

    segunda-feira, 20 de novembro de 2017 16:45
  • Ok e pode ter certeza, solicitarei ajuda.

    MARIANO1776

    segunda-feira, 20 de novembro de 2017 17:07