C#项目使用Properties.Settings保存数组

2017-06-19 19:44:14来源:CSDN作者:jatamatadada人点击

最近项目中遇到一个需要动态添加控件的上位机,假如使用固定名字的Settings保存cookies实在太麻烦。

WPF里是没有自带数组类型的setting的,所以需要自己添加。


新建一个窗口,拖五个textbox出来。


在Settings.settings里添加一个tbText 的string


保存后在解决方案资源管理器里用XML格式打开Settings.settings,将string类型改为string[ ] 数组,保存

<?xml version='1.0' encoding='utf-8'?><SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="ts03.Properties" GeneratedClassName="Settings">  <Profiles />  <Settings>    <Setting Name="tbText" Type="System.String[]" Scope="User">      <Value Profile="(Default)" />    </Setting>  </Settings></SettingsFile>
然后打开Setting.Designer.cs

public Settings(){    if (this.tbText == null)        this.tbText = new string[] { "1", "2", "3", "4", "5" };}        [global::System.Configuration.UserScopedSettingAttribute()][global::System.Diagnostics.DebuggerNonUserCodeAttribute()]public string[] tbText {    get {        return ((string[])(this["tbText"]));    }    set {        this["tbText"] = (string[])value;    }}

然后主窗体就可以调用了。

private void Form_Init(){    for(int i = 0 ;i<5;i++)    {        string tbStr = "textBox" + (i + 1).ToString();        Control col = this.Controls.Find(tbStr, true)[0];        TextBox tbHandle = col as TextBox;        tbHandle.Text = Properties.Settings.Default.tbText[i];    }}private void Form1_FormClosing(object sender, FormClosingEventArgs e){    for (int i = 0; i < 5; i++)    {        string tbStr = "textBox" + (i + 1).ToString();        Control col = this.Controls.Find(tbStr, true)[0];        TextBox tbHandle = col as TextBox;        Properties.Settings.Default.tbText[i] = tbHandle.Text;    }    Properties.Settings.Default.Save();}

需要注意的是Setting.Desinger.cs 里的代码会跟随Properties.Settings更改而被覆盖。

所以要么备份好Setting.Desinger.cs,要么在Settings.settings里新建完变量后就不要再动他了。

还有一点就是二维数组可以新建并读取到,但是保存不了。


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台