每个按钮点击C#桌面增加数量

每个按钮点击C#桌面增加数量,c#,windows,C#,Windows,我试图创建一个带有计时器的数学游戏,计时器可以计算出特定时间内正确问题的数量。现在,如果答案是正确的,我尝试增加每个按钮点击的int值 但它只增加一次,有时不增加: private void button1_Click(object sender, EventArgs e) { int x = Randomnumber.Next(12); int z = Randomnumber.Next(12); int s = x * z; int correct = 0;

我试图创建一个带有计时器的数学游戏,计时器可以计算出特定时间内正确问题的数量。现在,如果答案是正确的,我尝试增加每个按钮点击的
int

但它只增加一次,有时不增加:

private void button1_Click(object sender, EventArgs e)
{
    int x = Randomnumber.Next(12);
    int z = Randomnumber.Next(12);
    int s = x * z;
    int correct = 0;
    //int cv = +correct;
    textBox2.Text = x.ToString();
    textBox3.Text = z.ToString();
    if (s == Convert.ToInt32(textBox4.Text))
    {
        correct += 1;
        numbercorrect.Text = correct.ToString();
    }
}
您的主窗体(我假设您正在使用窗体)是一个类

我的建议是声明一个变量作为forms类的成员,并使用它来保存正确响应的数量

我会想象下面的情形

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int correct;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //insert logic here
            correct++;
        }
    }
}  

您需要将
int correct
声明移动到。否则,每次单击,您都会从新变量开始。

int correct=0的作用域在函数中。将其作为类字段移动到函数外部。这样,它将保留其值,而不是在每次单击时重置为
0

尝试以下操作:

private int correct = 0;
private void button1_Click(object sender, EventArgs e)
{
    int x = Randomnumber.Next(12);
    int z = Randomnumber.Next(12);
    int s = x * z;
    //int cv = +correct;
    textBox2.Text = x.ToString();
    textBox3.Text = z.ToString();
    if (s == Convert.ToInt32(textBox4.Text))
    {
        correct ++;
        numbercorrect.Text = correct.ToString();
    }
您总是以0开始计数,但从未获得原始值。
现在,保存数据的变量在函数外部,并在窗体加载时初始化。

每次单击按钮时,
correct
将开始重置为零。
尝试在方法之外声明
正确

尝试查看下面的代码:

int correct = 0;
tryParse(numbercorrect.Text, out correct);
因此,您的代码必须如下所示:

private void button1_Click(object sender, EventArgs e)
{
    int x = Randomnumber.Next(12);
    int z = Randomnumber.Next(12);
    int s = x * z;
    int correct = 0;
    int.tryParse(numbercorrect.Text, out correct);
    //int cv = +correct;
    textBox2.Text = x.ToString();
    textBox3.Text = z.ToString();
    if (s == Convert.ToInt32(textBox4.Text))
    {
        correct += 1;
        numbercorrect.Text = correct.ToString();

    }