C# 点击计数器保存/加载重置计数

C# 点击计数器保存/加载重置计数,c#,winforms,C#,Winforms,我对C#很陌生,经历过一些起伏 我目前陷入困境,经过数小时的反复尝试,我终于实现了保存/加载。但是,当文件加载完毕,我尝试继续时,计数重置为0,我不确定如何处理。 这是我的代码: namespace WindowsFormsApp11 { public partial class Form1 : Form { int count = 0; public Form1() { InitializeComponent();

我对C#很陌生,经历过一些起伏

我目前陷入困境,经过数小时的反复尝试,我终于实现了保存/加载。但是,当文件加载完毕,我尝试继续时,计数重置为0,我不确定如何处理。 这是我的代码:

namespace WindowsFormsApp11 {
    public partial class Form1 : Form {
        int count = 0;
        public Form1() {
            InitializeComponent();
        }

        private void button1_MouseDown(object sender, MouseEventArgs e) {
            if (e.Button == MouseButtons.Left) {
                count++;
                label1.Text = count.ToString();
            } else if (e.Button == MouseButtons.Right) {
                count--;
                label1.Text = count.ToString();
            }
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e) {
            Properties.Settings.Default.label = label1.Text;
            Properties.Settings.Default.Save();
        }

        private void Form1_Load(object sender, EventArgs e) {
            label1.Text = Properties.Settings.Default.label;
        }
    }
}

重新加载表单时,您从不分配
count
。您只需将设置分配给
label1.Text
,这样它就会显示在UI中,但当您按下按钮时,它会返回到1(
count
为0,因为您将其初始化为0)。将表单加载事件更改为类似以下内容:

    private void Form1_Load(object sender, EventArgs e)
    {
        label1.Text = Properties.Settings.Default.label;
        int.TryParse(label1.Text, out count);
    }

int.TryParse
将查看
label1.Text
(我们从设置中指定)中的内容,如果它是有效的
int
,则将其指定给
计数
字段。

您有一个变量
int count=0
,可根据用户的点击进行增减。那很好。现在,当您尝试将该变量的值保存到应用程序设置中或从应用程序设置中检索时,实际上并没有这样做,而是保存标签的文本,然后在加载时再次设置其文本,而不指定
计数
变量

您需要做的是:

  • 在应用程序设置中,确保
    标签
    设置的类型为
    int
    ,而不是
    字符串
  • (可选)最好将该设置的名称更改为
    Count
    或类似名称
  • 关闭表单时,需要保存局部变量的值
    count
  • 加载表单时,从设置中检索值(无论是
    标签
    还是
    计数
    ),并将其分配给局部变量
下面是一个示例:

int count = 0;

private void button1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        count++;
    }
    else if (e.Button == MouseButtons.Right)
    {
        count--;
    }
    label1.Text = count.ToString();
}

private void Form1_Load(object sender, EventArgs e)
{
    // The name of the setting here is `Count`.
    // You can change it to something else if you want.
    count = Properties.Settings.Default.Count;
    label1.Text = count.ToString();
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    Properties.Settings.Default.Count = count;
    Properties.Settings.Default.Save();
}

对于不熟悉winforms的用户,不需要显式加载,因为它保存在将自动加载的设置中。我可能会将计数保存到设置而不是文本字段,但我会将此与OP要求的内容联系起来,不知道他们是否还想做更多的事情。我尝试了您的建议,但在程序运行后按下按钮时,似乎仍会重置计数reloaded@procoderin1956我的错误,我没有测试代码,在键入代码时遗漏了一些内容。如果你按照我的答案中的步骤操作,你应该能够找到我自己犯的错误:)代码现在已经修复了。