我的表单没有正确循环

时间:2014-07-19 00:30:37

标签: c# winforms

我似乎无法让这个循环起作用。

点击提交按钮十次后,它应恢复为主窗体;相反,只要点击一次提交,它就会恢复。

private void submit_Click(object sender, EventArgs e)
{
    Form1 mainMenu = new Form1();
    int repeat = 0;

    do
    {
        num1.Text = A1.firstRandomNumber().ToString();

        num2.Text = A1.secondRandomNumber().ToString();

        repeat++;

    } while (repeat <= 10);

    if (repeat == 11)
    {
        mainMenu.Show();
        this.Hide();
    }
}

4 个答案:

答案 0 :(得分:3)

每次点击都会发生submit_Click内的所有内容。这包括重新定义repeat,将其设置为0,循环以将其完全递增为11,并交换哪个表单可见。

如果你想计算点击次数,你必须在处理程序之外建立你的计数器,以便它可以递增:

private int repeatSubmit = 0;

private void submit_Click(object sender, EventArgs e)
{
    if (repeatSubmit < 10)
    {
        num1.Text = A1.firstRandomNumber().ToString();
        num2.Text = A1.secondRandomNumber().ToString();
        repeatSubmit++;
    }
    else
    {
        mainMenu.Show();
        this.Hide();
        repeatSubmit = 0; // ready for the next time `this` form is shown
    }
}

答案 1 :(得分:2)

只是为了澄清,您正在等待用户点击按钮10次?或者循环应该模拟10次点击?

此循环将进入(执行)并设置num1num2,添加一个重复,然后执行10次直到repeat == 11,然后它将显示主菜单

我认为您所寻找的代码如下:

private void submit_Click(object sender, EventArgs e)
{
    ...
    repeat ++;
    num1.Text = A1.firstRandomNumber().ToString();
    num2.Text = A2.secondRandomNumer().ToString();
    if(repeat >=10)
    {
        mainMenu.Show();
        this.Hide();
    }
}

答案 2 :(得分:2)

正如您的代码所示,在1次单击时,您将进入循环,然后继续增加计数器,直到它等于11,然后退出循环并显示主菜单。基本上你不计算点击次数。

您要做的是将计数器存储在某处,可能作为类变量。然后每次进入点击功能时,您都会增加。当点击功能输入10次后,你会进入你的if语句。

private int clickCount = 0;

private void submit_Click(object sender, EventArgs e){
    clickCount++;
    // Other code that happens on a click

    if (clickCount == 10){  // 10th click show main menu
        // Code to show main menu
    }
}

答案 3 :(得分:0)

在第一次点击提交时它会循环显示,如果我理解你想要实现的目标,你根本不需要一个循环,每次按下按钮时只需一个计数器。