如何返回代码顶部?

时间:2013-12-12 21:44:53

标签: c# program-flow

当我点击一个按钮时,我使用了我制作的这个类,所以当它不符合要求时它会显示一个消息框,但它只是继续按下按钮,就像它不会返回一样。

例如,我希望程序在其中一个消息框显示后返回。 现在只需点击我点击的按钮即可。

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

按钮:

    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 个答案:

答案 0 :(得分:2)

除了Maxwaarde / AantalGewenst < 2之外,您不会在任何错误情况下返回。如果没有return,它将继续下行到random = new Random();行。

答案 1 :(得分: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());
  }
}

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