0

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; 
    }
4

2 回答 2

2

您不会在任何错误情况下返回,除了Maxwaarde / AantalGewenst < 2. 没有return,它将继续向下延伸random = new Random();

于 2013-12-12T22:16:13.630 回答
0

首先,我必须假设一些可能正确或不正确的变量:

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

接下来,我定义了一个常量:

private const int ERROR = -1;

使用它,我修改了您的Trekking函数以返回小数(因为看起来您正在尝试除法),并将其更改为:

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;
}

完成后,您只需修改btnStart_Click事件以使用该值执行您需要的任何操作:

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());
  }
}

你在上编程课吗?这种看起来像家庭作业。

于 2013-12-12T22:39:04.250 回答