Jump to content
Tythtyth

Dúvida sobre C#

Recommended Posts

Tythtyth

Há alguma forma de por exemplo, dar um nome a uma condição e depois executar um comando após várias coisas se essa condição for verdadeira?

Por exemplo:

   

if (textBox1.TextLength == 0)
                MessageBox.Show("You must fill in all the boxes before you can calculate your BMI", "Error");
            else if (textBox2.TextLength == 0)
                MessageBox.Show("You must fill in all the boxes before you can calculate your BMI", "Error"); 

*AQUI NO MEIO TINHA CÓDIGO*

depois se a condição acima for verdadeira executar este código:

MessageBox.Show("Your Body Mass Index is: " + IMC.ToString() + Environment.NewLine + "According to your BMI you are " + obesidade.ToString() + ".", "Body Mass Index");

Sou um bocado noob, gostava de ajuda  ;)

Não sei se importa mas estou a trabalhar em Windows Forms Application

Share this post


Link to post
Share on other sites
Tiago Salgado

Basta adicionares um "Else" no fim desse bloco que mostraste.

if (textBox1.TextLength == 0)
                MessageBox.Show("You must fill in all the boxes before you can calculate your BMI", "Error");
            else if (textBox2.TextLength == 0)
                MessageBox.Show("You must fill in all the boxes before you can calculate your BMI", "Error"); 
            else
                MessageBox.Show("Your Body Mass Index is: " + IMC.ToString() + Environment.NewLine + "According to your BMI you are " + obesidade.ToString() + ".", "Body Mass Index");

Share this post


Link to post
Share on other sites
Tythtyth

Mas se puser antes do If, o Parse vai dar erro no programa. Este código é para o programa verificar se as textboxes têm texto.

Share this post


Link to post
Share on other sites
Rechousa

Experimenta isto (não testei):

List<Textbox> lst = new List<Textbox>();
lst.Add(textBox1);
lst.Add(textBox2);
// Depois podes acrescentar as que quiseres...

// Vai verificar se as caixas de texto são válidas ou não. Por omissão são
bool valido = true;
foreach(Textbox t in lst)
{
   // Percorre cada textbox declada e valida-a. Se não for válida, sai do ciclo imediatamente
   if(t.TextLength == 0)
   {
      valido = false;
      break;
   }
}
if (!valido)
{
   MessageBox.Show("You must fill in all the boxes before you can calculate your BMI", "Error"); 
}
else
{
   MessageBox.Show("Your Body Mass Index is: " + IMC.ToString() + Environment.NewLine + "According to your BMI you are " + obesidade.ToString() + ".", "Body Mass Index");
}


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Tythtyth

Eu já estive a fazer algumas alterações, o que precisava agora é que se esse foreach fosse falso que não continuasse a executar o código que vem a seguir.

Share this post


Link to post
Share on other sites
Tiago Salgado

Onde verificas se é falso ou não, caso seja falso fazes um "return;"

if(x == false)

  return;

Share this post


Link to post
Share on other sites
Rechousa

Versão corrigida com a nova especificação ;)

List<Textbox> lst = new List<Textbox>();
lst.Add(textBox1);
lst.Add(textBox2);
// Depois podes acrescentar as que quiseres...

foreach(Textbox t in lst)
{
   // Percorre cada textbox declada e valida-a. Se não for válida, sai do ciclo imediatamente
   if(t.TextLength == 0)
   {
         MessageBox.Show("You must fill in all the boxes before you can calculate your BMI", "Error");
        return;
   }
}
MessageBox.Show("Your Body Mass Index is: " + IMC.ToString() + Environment.NewLine + "According to your BMI you are " + obesidade.ToString() + ".", "Body Mass Index");


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Tythtyth

O código está assim, tive de mudar para não dar erro, mas mesmo assim não funciona. Podem-me explicar porquê?

List<TextBox> lst = new List<TextBox>();
            lst.Add(textBox1);
            lst.Add(textBox2);



            bool valido = true;
            foreach (TextBox t in lst)
            {

                if (t.TextLength == 0)
                {
                    valido = false;
                    MessageBox.Show("You must fill in all the boxes before you can calculate your BMI", "Error");
                    return;
                }
            }

            if(!valido == true)

            {
                int alturametros = Int32.Parse(textBox1.Text);
                double altura = alturametros * 0.01;
                int peso = Int32.Parse(textBox2.Text);
                double IMC = peso / (altura * altura);
                int nivel = 0;
                string obesidade = "";

                if (IMC < 18.5)
                    nivel = 1;
                else if (IMC < 24.9)
                    nivel = 2;
                else if (IMC < 29.9)
                    nivel = 3;
                else if (IMC > 30)
                    nivel = 4;

                if (nivel == 1)
                    obesidade = "underweight";
                else if (nivel == 2)
                    obesidade = "normal";
                else if (nivel == 3)
                    obesidade = "overweight";
                else if (nivel == 4)
                    obesidade = "obese";

                    MessageBox.Show("Your Body Mass Index is: " + IMC.ToString() + Environment.NewLine + "According to your BMI you are " + obesidade.ToString() + ".", "Body Mass Index");

Share this post


Link to post
Share on other sites
Tythtyth

Substitui

if(!valido == true)

por

if(valido)

Obrigado ;)

Eu gosto de perceber o que faço, podes-me explicar qual era o erro no

if(!valido == true)

?

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Não precisas da variável valido.

Se reparares, na 2a versão do código que coloquei, eu tirei a variável.

E porque é que eu tirei? Porque ela não é necessária.

Se, no ciclo, houver uma caixa de texto que não seja válida, é apresentada a tal mensagem de erro ao utilizador e o programa sai do método (o return faz isso).

Ou seja, depois do ciclo, não precisas de validar é válido ou não é válido, pois é sempre válido. (se não fosse, teria saído anteriormente, certo?)


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Tythtyth

Sim, eu pensei assim também, mas o Visual C# Express dá-me erro que queres que faça?

Share this post


Link to post
Share on other sites
bin

outra duvida.. será possível chamar um código c++ num código c#  por exemplo usar a biblioteca nativa de SDL que esta em c++ no programa em c#


Citação

A ironia é o primeiro indício de que a consciência se tornou consciente.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.