我正在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,我在做什么错了?
答案 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;
}