【问题标题】:How to create settings programatically while running and load these after program restart. Without writing them into settingsfile manually C#如何在运行时以编程方式创建设置并在程序重新启动后加载这些设置。无需手动将它们写入设置文件 C#
【发布时间】:2018-04-20 02:23:56
【问题描述】:

我的程序中有 100 多个复选框,我想以编程方式保存这些复选框的状态,而无需在 Visual Studio 中手动创建设置属性。复选框绑定到包含 nummericUpDownBox 的用户控件。

我是这样保存的:

        //Save Button Click
    private void button2_Click(object sender, EventArgs e)
    {
        Settings.Default.Reset();

        foreach (Control c in panel1.Controls)
        {
            Settings.Default.Properties.Remove(c.Name);
            Settings.Default.Properties.Remove(c.Name + "value");

            if ((c is checkNum) && Settings.Default.Properties[c.Name] == null)
            {
                SettingsProperty property = new SettingsProperty(c.Name);
                property.DefaultValue = false;
                property.IsReadOnly = false;
                property.PropertyType = typeof(bool);
                property.Provider = Settings.Default.Providers["LocalFileSettingsProvider"];
                property.Attributes.Add(typeof(UserScopedSettingAttribute), new UserScopedSettingAttribute());
                Settings.Default.Properties.Add(property);
                Settings.Default[c.Name] = ((checkNum)c).Checked;

                SettingsProperty property2 = new SettingsProperty(c.Name + "value");
                property2.DefaultValue = 2;
                property2.IsReadOnly = false;
                property2.PropertyType = typeof(int);
                property2.Provider = Settings.Default.Providers["LocalFileSettingsProvider"];
                property2.Attributes.Add(typeof(UserScopedSettingAttribute), new UserScopedSettingAttribute());
                Settings.Default.Properties.Add(property2);
                Settings.Default[c.Name + "value"] = Convert.ToInt32(((checkNum)c).Value);
            }


        }
        Settings.Default.Save();
    }

现在,它已保存,如果我再次更改设置,我可以恢复设置。 但是如果我关闭应用程序它不起作用。当应用程序关闭并重新启动时,它不会保存新设置。 那么如何永久保存设置呢?这样我就可以在重新启动应用程序后加载它。我该怎么办?

这是我加载设置的方式:

        //Load Button Click
    private void button4_Click(object sender, EventArgs e)
    {
        foreach (Control c in panel1.Controls)
        {
            if ((c is checkNum) && Settings.Default.Properties[c.Name] != null)
            {
                ((checkNum)c).Checked = (bool)Settings.Default[c.Name];
                ((checkNum)c).Value = (int)Settings.Default[c.Name + "value"];
            }
        }
    }

【问题讨论】:

  • a.) 这听起来不应该进入应用程序设置。 b.) 在没有调试器/重新编译的情况下尝试。重新编译应用程序时(由于版本号更改等),您可能会被系统将用户定义的设置始终放入新文件夹中。
  • 你是如何读回这些设置的?
  • @Ralf,我已经创建了一个安装程序项目并安装了应用程序。一样的。我将编辑问题并添加加载设置的方式。

标签: c# visual-studio settings


【解决方案1】:

如果问题正确,请将设置保存到外部文件,如 xml 或简单的 txt。启动程序后,您的程序将读取保存的设置(您必须编写恢复功能)并且所有保存的设置都处于活动状态。

最简单的方法是使用 Streamreader 来处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2017-03-09
    • 2014-11-19
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多