我以新的形式
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
label1.Text = "Updating Settings File";
label1.Visible = true;
w = new StreamWriter(AuthenticationFileName,true);
w.WriteLine(cTextBox1.Text);
w.Close();
timer1.Start();
}
private void button4_Click(object sender, EventArgs e)
{
button4.Enabled = false;
label1.Text = "Updating Settings File";
label1.Visible = true;
w = new StreamWriter(AuthenticationFileName,true);
w.WriteLine(cTextBox2.Text);
w.Close();
timer1.Start();
}
然后在form1中:
string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
apiKey = lines[0];
userid = lines[1];
jsonfiledirectory = lines[2];
但问题是可能存在apiKey,userid和jsonfiledirectory不会像现在一样的顺序[0] [1] [2] 所以只需创建WriteLine我想为每一行添加一个键和一个值,例如文本文件将是这样的:
apikey = 435345erfsefs54
userid = myttt@walla.com
jsonfiledirectory = c:\
所以当我回读文本文件时,无论行的顺序如何。
答案 0 :(得分:2)
如何使用Json.Net(http://www.newtonsoft.com/json),创建一个包含您想要序列化/反序列化的属性的类,然后使用Json.Net来处理它们?
这很简单,我为你做了一个小提琴:https://dotnetfiddle.net/lkkLUv
基本上创建一个类
public class Settings {
public string ApiKey { get; set;}
public string UserId { get; set;}
public string JsonFileDirectory { get; set;}
}
然后阅读它(文件当然需要在json中正确格式化)
Settings settings = JsonConvert.DeserializeObject<Settings>(settingsExample);
其中settingsExample包含从文件读取的字符串(如果需要,可以使用json直接从文件中读取)
保存,只需使用JsonConvert.Serialize(设置)获取字符串并将其保存到您想要的文件
答案 1 :(得分:1)
有许多解决方案可以保存设置,包括xml序列化您的类,使用ini文件,使用注册表,使用json文件,使用appsettings,....
Windows窗体应用程序的一个好方法是使用Application Settings。
这样,您可以使用设计器或使用代码创建设置类,然后在运行时,加载设置,更改值以及保存或重置设置。
使用设计器创建设置:
Settings.settings
或根据需要添加新的设置文件。在您需要的每个设置的设计器中,您可以设置Name
设置,Value
作为默认值,Type
作为设置,然后选择{{1作为范围。这样您就可以在运行时更改设置。
您可以通过这种方式阅读,更改或保存设置:
User
以编程方式创建设置:
向项目添加一个类并将其命名为//Read and show a value
MessageBox.Show(Properties.Settings.Default.Key1);
//Changes the value
Properties.Settings.Default.Key1 = "New Value";
//Save settings (You can do it in a setting form or in close event of your main form)
Properties.Settings.Default.Save();
并从System.Configuration.ApplicationSettingsBase
继承
为您需要的每个应用程序设置添加属性。将UserScopedSettingAttribute
添加到酒店。您还可以使用DefaultSettingValue属性
MySettings
然后在使用时,您可以
public class MySettings : System.Configuration.ApplicationSettingsBase
{
[UserScopedSetting()]
[DefaultSettingValue("Value1")]
public string Key1
{
get
{
return ((string)this["Key1"]);
}
set
{
this["Key1"] = value;
}
}
}
要了解有关设置的更多信息: