[英]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.