Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Validaçoes - C#
28-06-2009, 17:38
Mensagem: #1
Validaçoes - C#
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:
Citar:private void button1_Click(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = " ";
label10.Text = " ";


// O problema esta aqui, se isto for executado o programa "crasha"... Sad
/*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:

Citar: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. Sad
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
28-06-2009, 23:07
Mensagem: #2
RE: Validaçoes - C#
Porque não usas o evento keypress ou change para verificar quando são alterados os dados na text e ai fazer a validação?!
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
29-06-2009, 12:16
Mensagem: #3
RE: Validaçoes - C#
Já consegui a primeira parte... mas não consigo resolver a 2º parte, a ultima validação de que falo. Neutral
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
29-06-2009, 13:57
Mensagem: #4
RE: Validaçoes - C#
Mas tipo se utilizares o evento keypress do objecto pretendido, neste caso da text, poderás testar onde o user está a clicar...assim não tens de fazer essa validação mais tarde.
Também vais correr menos recursos do sistema.
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
30-06-2009, 19:32
Mensagem: #5
RE: Validaçoes - C#
Não posso usar isso.

Quanto a minha ultima validação, saber algo? ( Quando os campos estão nulos )

Cumpz Wink
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-07-2009, 00:57
Mensagem: #6
RE: Validaçoes - C#
Ja experimentas-te outro tipo de analise de modo a achar se o texto é nulo, por exemplo...

textBox1.Text.Equals("")
ou
textBox.Text==null



eu ja tive algumas chatices com strings por causa de serem nulas ("") e usei algo do tipo :

if (StringAuxiliar!=null ){

//executa codigo correspondente

}
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-07-2009, 11:07
Mensagem: #7
RE: Validaçoes - C#
O problema não está ai.

O código "está bem", o problema é que a textBox 2 e 3 e a textBox 6 e 7 são do tipo inteiro e TimeSpan, respectivamente. Se o utilizador não preencher uma dessas textBox, o programa "craxa". Dizem-me que tenho de usar um TryParse nessas textBox, mas não sei como.

:\
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-07-2009, 15:47
Mensagem: #8
RE: Validaçoes - C#
Agora fiquei um bocado confuso, textbox do tipo inteiro? e TimeSpan?
As textbox recebem strings ,logo o que quer que o utilizador escreva , vão ser strings.
claro que podes converter isso atravez do metodo Convert.(...),ou podes dar a interpretação que quiseres aos dados.


em relação ao tryParse....é melhor adequares algo deste genero.


try
{
//codigo
}
catch (Exception)
{
//tratar erro
}
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-07-2009, 21:50
Mensagem: #9
RE: Validaçoes - C#
Talvez assim:

Boas!

Estou aqui na minha ultima validação do meu trabalho. O que eu quero é proibir o utilizador de tentar Adicionar novo atleta sem preencher os campos necessários.

Aqui deixo o código:
Citar://Se algum campo não estiver preenchido: Erro!
else if ((textBox1.Text == "") || (textBox2.Text == "") || (textBox3.Text == "") || (textBox4.Text == "") || (textBox5.Text == "") || (comboBox1.SelectedItem.ToString().Equals("Selecionar") || (textBox6.Text == "") || (textBox7.Text == "")))
{
toolStripStatusLabel1.Text = ("Erro! Ainda existem campos por preencher.");
}

O problema está nas textBox2, 3, 6 e 7, que não recebem valores do tipo string, ou seja, basta o utilizador não preencher uma dessas, que o programa falha e a validação não funcione.

Se alguém me puder ajudar, agradecia. (É a minha ultima validação e o trabalho fica concluído)
Cumprimentos Wink
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-07-2009, 22:00 (Esta mensagem foi modificada pela última vez a: 01-07-2009 22:04 por Shogun.)
Mensagem: #10
RE: Validaçoes - C#
int result;
int.tryparse("string", out result);

O resultado fica em result e a funcao devolve um booleano.

Usa tambem:

String.IsNullOrEmpty("string");

Para verificares se uma string é null ou vazia k e ekivalente a "".

Se fores ao google tens essas respostas todas e é mt mais rapido do que aki.
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 2 Visitante(s)