none
valor de variável - não perder RRS feed

  • Pergunta

  • Olá pessoal.

    Estou precisando do seguinte.

    Preciso setar um valor em uma variável no meu sistema,uma constante.

    E quando eu sair do sistema esse valor não perca.

    Como se eu tivesse mundano no codigo mesmo.

     string DataExpirar5dias = "15/11/2012";

    Da pra eu gravar no banco, e atualizar no banco. mas tem como eu fazer isso no código mesmo? obrigado.

    quinta-feira, 25 de outubro de 2012 18:45

Respostas

  • Depois que salvar os valores, tente usar o método Refresh(), certamente quando a aplicação é carregada os valores deve estar persistindo em memoria:

    //Sua rotina para atribuir valor nos "Settings"
    
    Properties.Settings.Default.Save();
    Properties.Settings.Default.Reload();



    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    • Marcado como Resposta Pedrohgb7 segunda-feira, 29 de outubro de 2012 12:00
    • Editado Vitor Mendes segunda-feira, 29 de outubro de 2012 12:01
    segunda-feira, 29 de outubro de 2012 11:43

Todas as Respostas

  • se for constante mesmo e o você não precisar colocar um novo valor faz o seguinte.

    private const string DataExpirar5dias = "15/11/2012";

    de caso contrário, vc vai ter que salvar no banco mesmo ou em arquivo em disco.

    quinta-feira, 25 de outubro de 2012 20:52
  • Não deu para entender muito bem, mas acho que vc pode usar o ConfigurationManager.

    <appSettings>
        <add key="DataExpirar5dias" value="15/11/2012"/>
    </appSettings>

    Assim para acessar essa variável basta chamar:

    ConfigurationManager.AppSettings["DataExpirar5dias"]

    Assim vc evita o hard code



    quinta-feira, 25 de outubro de 2012 21:01
  •  private void bt_Ok_Click(object sender, EventArgs e)
            {
                DateTime DataAlerta = Convert.ToDateTime(ConfigurationManager.AppSettings["DataAlertaExpirar"]);
    
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                config.AppSettings.Settings["DataAlertaExpirar"].Value = "25/12/2012";
                config.Save(ConfigurationSaveMode.Modified);
    
                ConfigurationManager.RefreshSection("appSettings");
            }
        }

    Emerson, estou fazendo assim.

    Mas não entendo o porque que a variavel dataalerta não pega nenhum valor.

    E tbm não altera o valor da key dataalertaexpirar.

    Não da erro, mas tbm não atualiza nd.

    Obrigado.

    <appSettings>
        <add key="DataAlertaExpirar" value="15/11/2012"/>
      </appSettings>

    • Editado Pedrohgb7 sexta-feira, 26 de outubro de 2012 12:12 Ajuste
    sexta-feira, 26 de outubro de 2012 11:38
  • Pedro,

    Você pode trabalhar com o conceito de Settings na sua aplicação. A ideia é a mesma, persisti valores em um XML e salva-los quando fechar a aplicação ou recupera-los quando a aplicação abrir:

    http://www.codeproject.com/Articles/15013/Windows-Forms-User-Settings-in-C
    http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    sexta-feira, 26 de outubro de 2012 12:20
  • ok vitor, obrigado deu certo.

    Mas tem um probleminha.

     Properties.Settings.Default.DataAlertaExpirar = Convert.ToDateTime(dt_Alerta.Value.ToShortDateString());
                Properties.Settings.Default.Save();
    
    Aqui eu seto,uma nova data. altera a data e salva.
    
    so que quando eu clico pra abrir o sittings, vem a data inicial, que eu setei.
    
    DataAlerta = Convert.ToDateTime(Properties.Settings.Default.DataAlertaExpirar);
                lb_DataAlertaAtual.Text = DataAlerta.ToShortDateString();
    
    Nesse codigo, eu pego a data que esta salva no sittings e mostro em um label.
    
    Quando eu rodo a aplicação sem depurar, mostra o valor inicial, que esta setado no sittings.
    
    Quando eu rodo depurando, mostra no label o ultimo valor de data que coloquei nesta variavel pelo codigo acima.
    
    O que pode estar acontecendo?
    
    Obrigado.
    

    sexta-feira, 26 de outubro de 2012 15:57
  • E aí pessoal, alguém pode me ajudar???

    Obrigado.

    Não entendo. msm colocando no click do botão. só depurando vem o valor que esta armazenado,


                DataAlerta = Convert.ToDateTime(Properties.Settings.Default.DataAlertaExpirar);
                lb_DataAlertaAtual.Text = DataAlerta.ToShortDateString();

    • Editado Pedrohgb7 segunda-feira, 29 de outubro de 2012 11:40 a
    segunda-feira, 29 de outubro de 2012 11:29
  • Depois que salvar os valores, tente usar o método Refresh(), certamente quando a aplicação é carregada os valores deve estar persistindo em memoria:

    //Sua rotina para atribuir valor nos "Settings"
    
    Properties.Settings.Default.Save();
    Properties.Settings.Default.Reload();



    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    • Marcado como Resposta Pedrohgb7 segunda-feira, 29 de outubro de 2012 12:00
    • Editado Vitor Mendes segunda-feira, 29 de outubro de 2012 12:01
    segunda-feira, 29 de outubro de 2012 11:43
  • Fecho vlew;

    segunda-feira, 29 de outubro de 2012 12:00