2

我正在尝试使用计时器创建一个数学游戏,该计时器可以计算特定时间内正确问题的数量。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();
    }
}
4

6 回答 6

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++;
        }
    }
}  
于 2012-11-05T22:27:50.400 回答
2

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

于 2012-11-05T22:28:05.563 回答
2

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

于 2012-11-05T22:28:24.330 回答
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 开始计数,永远不会得到原始值。现在保存数据的变量在函数之外,并在表单加载时初始化。

于 2012-11-05T22:30:08.370 回答
0

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

于 2012-11-05T22:30:41.100 回答
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();

    }
于 2012-11-05T22:31:00.897 回答