繁体   English   中英

应用程序设置效果不佳

[英]Application setting doesn't work well

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

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

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();
    }

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

我测试了很多东西,比如:

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() 不保存?

回答你必须添加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只是一个名称,您可以使用其他名称代替。

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

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

这里有一个更彻底的解释: App.config: User vs Application Scope

这是一个例子。

我创建了一个 webform 应用程序并向其中添加了一个设置文件(称为 TestSettings.settings)。 我添加了两个值: 在此处输入图片说明

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

c:\\Users{username}\\AppData\\Local{appname}{random_dir_name}{version}\\user.config

我用来证明这一点的代码是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM