我正在尝试使用计时器创建一个数学游戏,计算器在特定时间内计算正确问题的数量。现在,如果答案是正确的,我正在尝试每按一次按钮增加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();
}
}
答案 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();
}