C#问答游戏:右单选按钮标签得分

时间:2019-04-09 08:27:47

标签: c# radio-button label

我正在C#中的Windows窗体应用程序中创建一个测验游戏项目,并试图使其正确,以使单选按钮单击在标签上给出1分,在错误答案上给出0分。一个分组框中有4个单选按钮,一个是正确的答案。我的代码存在的问题是,如果我在第一个单选按钮中输入了一个正确答案,然后继续进行下一个分组框问题,那么它不会添加分数,因此我们可以说前两个分组框问题都对,它添加的第一个分数是1,而在下一个单击右键之后,分数保持为1。我需要在代码中添加什么,以便正确地计算答案?

private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                int score = 1;
                label1.Text = score.ToString();
                score = score += 1;
                score.ToString();
            }


 private void radioButton5_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton5.Checked)
            {
                int score = 1;
                label1.Text = score.ToString();
                score = score += 1;
                score.ToString();
            }

第一个单选按钮是第一个组框的正确答案,并且在标签上添加了1。在第二个单选按钮上,应该在标签上添加1分,所以总分应为2,我在做什么错了?

1 个答案:

答案 0 :(得分:0)

在方法之外定义一个新的成员变量。然后,您可以从此类中的每个方法访问它。另外:+ = 1已经为得分加1,所以您不必做score = score + = 1。

    export const SINGLE_PRODUCT_QUERY = gql `
      query product( $slug: String!) {
        product(slug: $slug) {
          name
          description
          slug
        },
      }
    `;

您下一步应该做的可能是考虑将计算和UI更新外包到新方法中。例如:

private int _score = 0;

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton1.Checked)
        {
            _score += 1;
            label1.Text = _score.ToString();
        }
    }

    private void radioButton5_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton5.Checked)
        {
            _score += 1;
            label1.Text = _score.ToString();
        }
     }

所以您可以改为:

private void AddToScore(int points)
{
    _score += points;
}