我的表单上有一个复选框(名称: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();
}
但是当我对复选框进行更改并关闭调试并重新运行它时,不会应用更改。 我该怎么办?哪里出错?我是初学者,所以要明确解释。 谢谢大家
答案 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)。我添加了两个值:
当您运行此应用程序时,它会在应用程序目录中创建一个名为与您的可执行文件相同的文件,并附加.config,其中包含元素和元素(以及其他内容)。但是这个文件只包含初始值。如果更改元素下的值并调用Save(),则不会更新此文件。它将创建一个文件:
C:\用户{用户名} \应用程序数据\本地{APPNAME} {random_dir_name} {版本} \ user.config
我的代码是:
Console.WriteLine(TestSettings.Default["UserValue"]);
TestSettings.Default["UserValue"] = "def";
TestSettings.Default.Save();