none
DÚVIDA VALOR NEGATIVO RRS feed

  • Pergunta

  • Bom dia, galera!

    Seguinte, tenho um código que verifica a idade digitada no maskedbox:

    private void mskDataP_Leave(object sender, EventArgs e)
            {
                DateTime resultado = DateTime.MinValue;
                if (DateTime.TryParse(this.mskDataP.Text.Trim(), out resultado))
                {
                    txtIdadeP.Text = (DateTime.Today.Year - DateTime.Parse(mskDataP.Text).Year).ToString();
                }
                else
                {
                    MessageBox.Show("Data inválida!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    mskDataP.Clear();
                    txtIdadeP.Clear();
                    cbEtniaP.Focus();
                 }

    Ele funciona direitinho, digito a idade no maskedbox e ele recebe no textbox da idade...

    Só que, se eu colocar uma data depois da data atual(hoje)queria que ele me retornasse "Data inválida" também.

    Tentei colocar um if no evento leave assim:

    if (int.Parse(txtIdadeP.Text) < 0);
                {
                    MessageBox.Show("Data inválida!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    mskDataP.Clear();
                    txtIdadeP.Clear();
                    cbEtniaP.Focus();

    O que ele faz: Verifica se o valor recebido no textbox da idade é negativo, se sim, ele retorna data inválida.

    Mas não deu certo, alguém pode ajudar?


    • Editado Felipe STW quarta-feira, 28 de outubro de 2015 15:08
    quarta-feira, 28 de outubro de 2015 15:02

Respostas

  • Bem Felipe você pode fazer a verificação da seguinte forma :

    public static bool IsValid(string dataInput) { return !string.IsNullOrEmpty(dataInput) && !(Convert.ToDateTime(dataInput) > DateTime.Now); }

     MessageBox.Show(IsValid("01/01/17")?"Data Inválida:"Data Ok!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);



    • Editado Marcelo Sant'Ana quarta-feira, 28 de outubro de 2015 21:54
    • Sugerido como Resposta WebPerfeccio quarta-feira, 28 de outubro de 2015 21:54
    • Marcado como Resposta Marcos SJ quinta-feira, 29 de outubro de 2015 12:11
    quarta-feira, 28 de outubro de 2015 21:50
  • Olá Marcos!

    Acabei de conseguir. Fiz verificação dentro de um IF com outro IF.

    Ficou assim:

    if (mskDataP.MaskCompleted)
                {
                    DateTime resultado = DateTime.MinValue;
                    if (DateTime.TryParse(this.mskDataP.Text.Trim(), out resultado))
                    {
                        txtIdadeP.Text = (DateTime.Today.Year - DateTime.Parse(mskDataP.Text).Year).ToString();
                        if (int.Parse(txtIdadeP.Text) < 0)
                        {
                        MessageBox.Show("Data inválida!", "Aviso",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mskDataP.Clear();
                        txtIdadeP.Clear();
                        mskDataP.Focus();
                        return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Data inválida!", "Aviso",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mskDataP.BackColor = Color.White;
                        mskDataP.Clear();
                        txtIdadeP.Clear();
                        mskDataP.Focus();
                    }

    Deu certinho, se eu digitar uma data inválida ele me retorna a mensagem e se eu digitar uma data de forma que o valor da idade fique negativo ele também me retorna a mensagem.

    Obrigado.

    • Marcado como Resposta Marcos SJ quarta-feira, 4 de novembro de 2015 12:21
    quarta-feira, 4 de novembro de 2015 11:50
  • Olá Felipe Távora,

    Legal!

    Eu estava pedindo ajuda aqui, pois achei que você estava fazendo este cálculo de idade no lugar errado. De qualquer maneira, obrigado por compartilhar conosoco a sua solução.

    Atenciosamente


    Marcos Roberto de Souza Junior

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

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e 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.

    • Marcado como Resposta Felipe STW terça-feira, 12 de janeiro de 2016 18:39
    quarta-feira, 4 de novembro de 2015 12:21

Todas as Respostas

  • Olá Felipe Távora,

    Você está conseguindo compilar o código?

    Atenciosamente


    Marcos Roberto de Souza Junior

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

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e 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.

    quarta-feira, 28 de outubro de 2015 18:40
  • Bem Felipe você pode fazer a verificação da seguinte forma :

    public static bool IsValid(string dataInput) { return !string.IsNullOrEmpty(dataInput) && !(Convert.ToDateTime(dataInput) > DateTime.Now); }

     MessageBox.Show(IsValid("01/01/17")?"Data Inválida:"Data Ok!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);



    • Editado Marcelo Sant'Ana quarta-feira, 28 de outubro de 2015 21:54
    • Sugerido como Resposta WebPerfeccio quarta-feira, 28 de outubro de 2015 21:54
    • Marcado como Resposta Marcos SJ quinta-feira, 29 de outubro de 2015 12:11
    quarta-feira, 28 de outubro de 2015 21:50
  • Vou tentar. Obrigado
    quarta-feira, 4 de novembro de 2015 11:29
  • Olá, bom dia Marcos Roberto.

    Meu código está assim:

    if (mskDataP.MaskCompleted)
                {
                    DateTime resultado = DateTime.MinValue;
                    if (DateTime.TryParse(this.mskDataP.Text.Trim(), out resultado))
                    {
                        txtIdadeP.Text = (DateTime.Today.Year - DateTime.Parse(mskDataP.Text).Year).ToString();
                    }
                    else
                    {
                        MessageBox.Show("Data inválida!", "Aviso",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mskDataP.BackColor = Color.White;
                        mskDataP.Clear();
                        txtIdadeP.Clear();
                        mskDataP.Focus();
                    }
                }

    Ele calcula a idade normalmente e se eu inserir uma data inválida ele me retorna a mensagem de data inválida.

    Como eu faço para incluir uma verificação no meu textbox idade quando o valor for negativo? Ou seja, se eu colocar uma data acima da atual ele me retorna valor negativo na idade. Queria que ele mostrasse data inválida também.

    Pode me ajudar?

    quarta-feira, 4 de novembro de 2015 11:36
  • Olá Marcos!

    Acabei de conseguir. Fiz verificação dentro de um IF com outro IF.

    Ficou assim:

    if (mskDataP.MaskCompleted)
                {
                    DateTime resultado = DateTime.MinValue;
                    if (DateTime.TryParse(this.mskDataP.Text.Trim(), out resultado))
                    {
                        txtIdadeP.Text = (DateTime.Today.Year - DateTime.Parse(mskDataP.Text).Year).ToString();
                        if (int.Parse(txtIdadeP.Text) < 0)
                        {
                        MessageBox.Show("Data inválida!", "Aviso",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mskDataP.Clear();
                        txtIdadeP.Clear();
                        mskDataP.Focus();
                        return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Data inválida!", "Aviso",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mskDataP.BackColor = Color.White;
                        mskDataP.Clear();
                        txtIdadeP.Clear();
                        mskDataP.Focus();
                    }

    Deu certinho, se eu digitar uma data inválida ele me retorna a mensagem e se eu digitar uma data de forma que o valor da idade fique negativo ele também me retorna a mensagem.

    Obrigado.

    • Marcado como Resposta Marcos SJ quarta-feira, 4 de novembro de 2015 12:21
    quarta-feira, 4 de novembro de 2015 11:50
  • Olá Felipe Távora,

    Legal!

    Eu estava pedindo ajuda aqui, pois achei que você estava fazendo este cálculo de idade no lugar errado. De qualquer maneira, obrigado por compartilhar conosoco a sua solução.

    Atenciosamente


    Marcos Roberto de Souza Junior

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

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e 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.

    • Marcado como Resposta Felipe STW terça-feira, 12 de janeiro de 2016 18:39
    quarta-feira, 4 de novembro de 2015 12:21