每个按钮的增量数量单击C#Desktop

时间:2012-11-05 22:24:17

标签: 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 cv = +correct;
    textBox2.Text = x.ToString();
    textBox3.Text = z.ToString();
    if (s == Convert.ToInt32(textBox4.Text))
    {
        correct += 1;
        numbercorrect.Text = correct.ToString();
    }
}

6 个答案:

答案 0 :(得分:2)

你的主要表格(我假设你正在使用表格)是一个班级。

我建议将变量声明为表单类的成员,并使用它来保存正确响应的数量。

我想象下面的内容;​​

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

        public Form1()
        {
            InitializeComponent();
        }

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

答案 1 :(得分:2)

您需要将int correct声明移至 class scope 。否则,每次点击都会以新变量开始。

答案 2 :(得分:2)

int correct = 0;在功能范围内。将其作为类字段移到函数外部。这样,它将保留其价值,而不是在每次点击期间重置为0

答案 3 :(得分:1)

试试这个:

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开始计数,永远不会得到原始值。 现在,保存数据的变量位于函数之外,并在表单加载时进行初始化。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

试着看下面的代码:

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

    }