-2

我创建了一个win-form,它能够生成一个带有3个标签(、、、label1label2的数字label4和一个textbox将被存储的数字,然后在按下按钮时验证它的值。我的问题是,label4当我正确回答时,它并没有提高自己的价值。使用此代码

int num = 0;
string temp;
        if (textBox1.Text == ans.ToString())
        {
            num++;
            temp = "Correct Answers " + num;


            int a = rr.Next(4), b = rr.Next(4);
            ans = a + b;
            label1.Text = a.ToString();
            label2.Text = b.ToString();          

            label4.Text = temp;
            textBox1.Focus();
            textBox1.SelectAll();

        }
4

2 回答 2

4

label4永远不会增加自己的价值,还是永远不会比第一次增加更多?因为这两个选项中的后者正是您正在做的。查看您的逻辑中的步骤:

int num = 0;
string temp;
//...
num++;
temp = "Correct Answers " + num;
//...
label4.Text = temp;

无论你答对多少次,label4只能显示:

"Correct Answers 1"

因为您总是初始化num0,将其递增为1并显示它。您在哪里跟踪总共给出了多少答案?

您需要更高范围内的一些整数值来跟踪它。你把它放在哪里取决于你的对象的寿命。例如,如果存在此逻辑的对象在多个答案中持续存在(也就是说,如果同一个实例始终在内存中并且它没有被销毁和重新创建),那么您可以添加一个类级成员来保存该值. 像这样的东西:

private int TotalCorrectAnswers { get; set; }

然后您的代码将使用该值而不是每次都实例化一个新值:

string temp;
//...
TotalCorrectAnswers++;
temp = "Correct Answers " + TotalCorrectAnswers;
//...
label4.Text = temp;

其他选项可能包括将值存储在静态字段中以在对象生命周期中持续存在,数据库以在应用程序生命周期中持续存在等。这取决于您的应用程序的结构。

于 2013-07-15T17:32:30.517 回答
2

因此,当您提供数学问题的答案时,指示正确答案计数的最高 Label4 是 1?您不是偶然在单击事件处理程序中定义变量 num 吗?在这种情况下,每次你得到一个正确的答案时,它都会将 num 从零增加到一,不正确的不会显示任何变化,但是你的下一个正确答案会再次从零增加到一。

于 2013-07-15T17:31:21.037 回答