应用程序设置不能很好地工作

时间:2017-02-14 12:45:06

标签: c# checkbox

我的表单上有一个复选框(名称:tarahi_algouritm)和一个按钮(名称:button1)(名称:frm_choose)。我想在用户点击按钮时保存复选框上的最新更改。这意味着用户运行程序并选中复选框,然后单击按钮,然后关闭程序。当他/她重新运行它时,应选中复选框。或者他禁用复选框并单击按钮,在另一次运行后,应禁用复选框。 / p>

为此,在应用程序设置(表格部分)中放入一个复选框(名称:s_tarahi_algouritm)并在范围部分中选择USER ..我说更改适用于复选框,s_tarahi_algouritm用于保存checkbox.I上的最新更改。写了这些代码:

private void frm_choose_Load(object sender, EventArgs e)
    {
        if (Properties.Settings.Default.s_tarahi_algouritm!=null)
          tarahi_algouritm= Properties.Settings.Default.s_tarahi_algouritm;

    }

private void button1_Click(object sender, EventArgs e)
    {
        Properties.Settings.Default.s_tarahi_algouritm = tarahi_algouritm;
         Properties.Settings.Default.Save();
    }

但是当我对复选框进行更改并关闭调试并重新运行它时,不会应用更改。 我该怎么办?哪里出错?我是初学者,所以要明确解释。 谢谢大家

2 个答案:

答案 0 :(得分:0)

我测试过很多东西:

Properties.Settings.Default.Properties.Add(new System.Configuration.SettingsProperty("a"));
        Properties.Settings.Default.Properties["a"].DefaultValue = "b";
        Properties.Settings.Default.Save();

它没有错误但不保存。在此链接中:

C# Settings.Default.Save() not saving?

回答你必须在保存后添加Properties.Settings.Default.Reload();,我做了但没有改变。似乎没有人知道答案。(我读了很多文章)。

对我来说这看起来像是癌症!我建议您轻松将设置保存到xml文件中。

下面我添加一个简单的xml保存方法:

using System.Xml.Linq;

        XElement settings;
        try
        {
            settings = XElement.Load("settings.xml"); //beside the app .exe file
        }
        catch (Exception) // it is first time and you have not file yet.
        {
            settings = new XElement("settings");
            settings.Save("settings.xml");
        }

如果您想添加新元素:

        settings.Add(new XElement("firstKey", tarahi_algouritm.Checked.ToString()));
        settings.Save("settings.xml");

如果您想阅读或编辑元素:

        XElement settings = XElement.Load("settings.xml");  
        string firstKey = settings.Element("firstKey").Value; //reading value

        settings.Element("firstKey").Value = "New Value";  //Edit
        settings.Save("settings.xml");   //Save

请记住, firstKey 只是一个名称,您可以使用其他名称。

答案 1 :(得分:0)

问题是设置文件分为两部分:一部分用于应用程序设置(您可以保存到),另一部分用于用户设置(可以保存到)。您需要保存用户设置(它将写入您的c:\ users {userid} ...目录)。

查看对Farzin链接的最高投票回复。它也解释了这个问题。

以下是更详尽的解释:App.config: User vs Application Scope

以下是一个例子。

我创建了一个webform应用程序并向其添加了一个Settings文件(称为TestSettings.settings)。我添加了两个值:enter image description here

当您运行此应用程序时,它会在应用程序目录中创建一个名为与您的可执行文件相同的文件,并附加.config,其中包含元素和元素(以及其他内容)。但是这个文件只包含初始值。如果更改元素下的值并调用Save(),则不会更新此文件。它将创建一个文件:

C:\用户{用户名} \应用程序数据\本地{APPNAME} {random_dir_name} {版本} \ user.config

我的代码是:

Console.WriteLine(TestSettings.Default["UserValue"]);
TestSettings.Default["UserValue"] = "def";
TestSettings.Default.Save();