How do I return to the top of the code?

161 views Asked by At

When I Click on a button I use this class I made, so when it doesn't meet the requirements it shows a messagebox, but it just keeps going with the button, like it doesn't go back.

For example, I want the program to go back after one of these messagebox shows up. Now it just go through with button I clicked.

      public Trekking(int Maxwaarde, int AantalGewenst)
    {
        if (Maxwaarde > 90)
        {
            MessageBox.Show("Uw getal mag niet boven de 90 zijn!");

        }
        else if (Maxwaarde < 0)
        {
            MessageBox.Show("Dit aantal is niet mogelijk!");
        }
        else if (AantalGewenst > 45)
        {
            MessageBox.Show("Uw getal mag niet boven de 45 zijn!");
        }
        else if (AantalGewenst < 0)
        {
            MessageBox.Show("Dit aantal is niet mogelijk!");
        }
        else if (Maxwaarde / AantalGewenst < 2)
        {
            MessageBox.Show("Uw maxwaarde moet minstens het dubbele van Aantal Gewenst zijn!");
            return;
        }
        else
        {
            if (AantalGewenst <= 45)
                IsTenEinde = true;
        }

        random = new Random();
        getallen = new int[AantalGewenst];
        this.Maxwaarde = Maxwaarde;
        this.AantalGewenst = AantalGewenst;
        AantalGetrokken = 0;
        IsTenEinde = false;
    }

button:

    private void btnStart_Click(object sender, EventArgs e)
    {
        int AantalGewenst = Convert.ToInt32(tbInvoerAantalGewenst.Text);
        int Maxwaarde = Convert.ToInt32(tbInvoerMaxwaarde.Text);
        trekking = new Trekking(Maxwaarde, AantalGewenst);
        btnTrek.Enabled = true;
        btnStop.Enabled = true; 
    }
2

There are 2 answers

1
AudioBubble On BEST ANSWER

First, I had to assume some variables that may or may not be correct:

private bool IsTenEinde;
private int AantalGetrokken, AantalGewenst, Maxwaarde;
private TextBox tbInvoerAantalGewenst, tbInvoerMaxwaarde;
private Button btnStop, btnTrek;

Next, I defined a constant:

private const int ERROR = -1;

Using that, I modified your Trekking function to return a decimal (because it looks like you are trying to do division), and changed it to this:

public decimal Trekking(int Maxwaarde, int AantalGewenst) {
  decimal result = ERROR;
  if (Maxwaarde > 90) {
    MessageBox.Show("Uw getal mag niet boven de 90 zijn!");
    return result;
  } else if (Maxwaarde < 0) {
    MessageBox.Show("Dit aantal is niet mogelijk!");
    return result;
  } else if (AantalGewenst > 45) {
    MessageBox.Show("Uw getal mag niet boven de 45 zijn!");
    return result;
  } else if (AantalGewenst < 0) {
    MessageBox.Show("Dit aantal is niet mogelijk!");
    return result;
  } else if (Maxwaarde / AantalGewenst < 2) {
    MessageBox.Show("Uw maxwaarde moet minstens het dubbele van Aantal Gewenst zijn!");
    return result;
  } else {
    if (AantalGewenst <= 45)
      IsTenEinde = true;
  }
  var random = new Random();
  var getallen = new int[AantalGewenst];
  this.Maxwaarde = Maxwaarde;
  this.AantalGewenst = AantalGewenst;
  result = (decimal)Maxwaarde / (decimal)AantalGewenst;
  AantalGetrokken = 0;
  IsTenEinde = false;
  return result;
}

With that done, you just need to modify your btnStart_Click event to do whatever you need with the value:

private void btnStart_Click(object sender, EventArgs e) {
  btnTrek.Enabled = false;
  btnStop.Enabled = false;
  int AantalGewenst = Convert.ToInt32(tbInvoerAantalGewenst.Text);
  int Maxwaarde = Convert.ToInt32(tbInvoerMaxwaarde.Text);
  decimal trekking = Trekking(Maxwaarde, AantalGewenst);
  btnTrek.Enabled = true;
  btnStop.Enabled = true;
  if (ERROR < trekking) {
    MessageBox.Show(trekking.ToString());
  }
}

Are you in a programming class? This kind of looks like a homework assignment.

0
Adam V On

You're not returning in any error case except for Maxwaarde / AantalGewenst < 2. Without the return, it's going to continue down to the random = new Random(); line.