• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

PTDown

Validar Campos

6 mensagens neste tópico

Boas!

Estou aqui com uns problemas a finalizar o meu projecto da cadeira de Programação Orientada a Objectos.

O problema é com as excepções, queria validar vários campos (de textBox´s). Basicamente eles têm de ser validados antes de adicionar novo atleta. O que quero validar, é no campo da textBox2, apenas podem ser inseridos valores numéricos.

Deixo aqui o código:

private void button1_Click(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = " ";
            label10.Text = " ";
            

            // O problema esta aqui, se isto for executado o programa "crasha"...  
            /*int X = 0;
            if (textBox2.Text != "")
            {
                try
                {
                    X = int.Parse(textBox2.Text);
                }
                catch (Exception)
                {
                    toolStripStatusLabel1.Text = ("Erro! Apenas valores numericos.");
                }
                
               
            }*/


            Atleta a = new Atleta(textBox1.Text, int.Parse(textBox2.Text), int.Parse(textBox3.Text), textBox4.Text, textBox5.Text, comboBox1.Text, TimeSpan.Parse(textBox6.Text), TimeSpan.Parse(textBox7.Text));

            if (a.TempoChegada < a.TempoPartida)
            {
                toolStripStatusLabel1.Text = ("Erro! O tempo de partida nunca poderá ser superior ao tempo de chegada.");
            }
            else if ((a.Idade < 10) || (a.Idade > 45))
            {
                toolStripStatusLabel1.Text = ("Erro! A idade que definiu não pode ser usada; Apenas entre 10 e 45 anos.");
            }
            else if ((textBox1.Text.Length <= 0) || (textBox2.Text.Length <= 0) || (textBox3.Text.Length <= 0) || (textBox4.Text.Length <= 0) || (textBox5.Text.Length <= 0) || (comboBox1.SelectedItem.ToString().Equals("Selecionar") || (textBox6.Text.Length <= 0) || (textBox7.Text.Length <= 0)))
            {
                toolStripStatusLabel1.Text = ("Erro! Ainda existem campos por preencher.");
            }
            else
            {
                a.Escalao = a.DeterminarEscalao();

                a.TempoDeProva = a.determinatempoprova();

                GestaoAtleta.atletas.Add(a);

                label10.Text = GestaoAtleta.atletas.Count.ToString();

                //show
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = GestaoAtleta.atletas;

                dataGridView1.Refresh();
                toolStripStatusLabel1.Text = ("Atleta adicionado com sucesso!");
                //Clean();
            }
        }

Outro problema esta ainda na validação:

else if ((textBox1.Text.Length <= 0) || (textBox2.Text.Length <= 0) || (textBox3.Text.Length <= 0) || (textBox4.Text.Length <= 0) || (textBox5.Text.Length <= 0) || (comboBox1.SelectedItem.ToString().Equals("Selecionar") || (textBox6.Text.Length <= 0) || (textBox7.Text.Length <= 0)))
            {
                toolStripStatusLabel1.Text = ("Erro! Ainda existem campos por preencher.");
            }

Aquando da execução do programa, se meter nenhum campo sem nada... isso não funciona, porque os campos da textBox2, textBox3 são numéricos e da textbox6 e textBox7 são TimeSpan... ou seja não são do tipo .text, se o utilizador não meter nenhum destes (textBox2, textBox3, textbox6 e textBox7) o programa "crasha".

Ajudem-me pro favor... amanhã tenho de entregar isto.  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas, para veres se tao a ser usadas letras ou numeros uma boa forma será percorreres letra a letra da text box, passá-la para o valor em ascii e ver se está entre os valores de numeros, que será entre 48 e 57 inclusive. Tenta fazer. Se não conseguires e eu ainda tiver on, ajudo.te.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já consegui validar os campos de inserção de números.  :cheesygrin:

            #region Validações

            //Validar valores númericos
            int x = 0;

            if (int.TryParse(textBox2.Text, out x))
            {
                x = int.Parse(textBox2.Text);
            }
            else
            {
                toolStripStatusLabel1.Text = ("Erro! A idade compreende apenas valores númericos!");
                return;
            }

            if (int.TryParse(textBox3.Text, out x))
            {
                x = int.Parse(textBox3.Text);
            }
            else
            {
                toolStripStatusLabel1.Text = ("Erro! O número do atleta compreende apenas valores númericos!");
                return;
            }
            #endregion

Agora... não sei como faço para os campos onde tenho de meter TimeSpan, se me puderes ajudar, agradecia. //EDIT: Já consegui também!  :cheesygrin:

E outra coisa, quanto ao meu segundo problema, em relação ao verificar se os campos estão vazios, sabes como posso corrigir aquilo?

Cumprimentos :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
int x = 0;

            if (int.TryParse(textBox2.Text, out x))

            {

                x = int.Parse(textBox2.Text);

            }

O int.Parse é desnecessário, se o tryparse correr bem, o x já fica com o valor certo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sabes algo em relação a minha ultima validação? (Quando os campos estão nulos)

Cumpz :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora