Clicker计数器保存/加载重置计数

时间:2018-01-29 02:58:48

标签: c# winforms

我对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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

重新加载表单时,永远不会指定count。您只需将设置分配到label1.Text,以便它显示在用户界面中,但是当您按下按钮时,它会返回到1(count为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,将其分配给{count 1}} field。

答案 1 :(得分:0)

您有一个变量int count = 0,您可以根据用户点击来增加和减少变量count。这完全没问题。现在,当您尝试将保存并将该变量的值应用到应用程序设置中时,您实际上并没有这样做,而是保存标签的文本,然后在加载时再次设置文本而不指定label变量

您需要做的是:

  • 在应用程序设置中,确保int设置的类型为string而不是Count
  • (可选)更好地将该设置的名称更改为count或类似内容。
  • 关闭表单时,您需要保存本地变量label的值。
  • 加载表单时,您可以从设置中检索值(Countint 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(); } ),并将其分配给本地变量。

以下是一个插图示例:

<template>
  <div id="app">
    <img src="../assets/logo.png">
      <router-view/>
    </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
  #app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
  }
</style>