在多个窗体窗口中保持分数

时间:2016-04-05 15:09:49

标签: c# windows forms

我正在运行一份包含10个问题的调查问卷。第一个Form.cs只是一个开始按钮,用于在新的Form.cs中打开第一个问题。

新表格有3个单选按钮,每个按钮应返回不同的点(0,5,10)。这些点应该在所有表单中累积,然后总计应该显示在最终的Form.cs中或上传到SQL等。

我试过编码,但不确定它是最好的方式。

namespace XX
{
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    int points;
    int totalscore = 0;

    private void btnCANCEL_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.Cancel;
    }

    private void zeropoint_CheckedChanged(object sender, EventArgs e)
    {
        if (zeropoint.Checked == true)
        {
            points = 0;
            totalscore = totalscore + points;
        }

    }

    private void fivepoint_CheckedChanged(object sender, EventArgs e)
    {
        if (fivepoint.Checked == true)
        {
            points = 5;
            totalscore = totalscore + points;
        }
    }

    private void tenpoint_CheckedChanged(object sender, EventArgs e)
    {
        if (tenpoint.Checked == true)
        {
            points = 10;
            totalscore = totalscore + points;
        }
    }

    Form3 thirdForm = new Form3();
    private void btnOK_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.OK;
        this.Hide();
        var form3 = new Form3();
        form3.FormClosed += (s, args) => this.Close();
        form3.Show();

    }

}

3 个答案:

答案 0 :(得分:1)

我创建了一个将分数保存为字段的类。您可以在主窗体中存储对该类对象的引用。打开新表单时,您可以将对象引用传递给该表单。在单独的表单关闭后,仍可通过主表单中的引用访问该对象中得分的所有更改。

此外,如果您发现需要额外的共享数据,您只需将其添加到分数类中,以便可以随处访问它们。

答案 1 :(得分:1)

听起来您希望静态成员跟踪您班级所有实例的总分。看看这个。

https://msdn.microsoft.com/en-us/library/79b3xss3.aspx#Anchor_0

并将总计数更改为

public static int totalcount = 0;

答案 2 :(得分:0)

你想要一个静态类

static class Scoring
{
    public static int CurrentPoints { get; set; }
    public static int TotalScore { get; set; }

}

然后把它叫做

Scoring.CurrentPoints += 10;