我的表单中有一个ruleList,我想保存其中的每个项目,并在我再次启动应用程序时加载值。
所以我在属性中创建了一个新的设置选项卡 - >设置
编辑的Settings.settings文件如下:
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="fireWall.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="Location" Type="System.Drawing.Point" Scope="User">
<Value Profile="(Default)">50, 50</Value>
</Setting>
<Setting Name="FormSize" Type="System.Drawing.Size" Scope="User">
<Value Profile="(Default)">800, 600</Value>
</Setting>
<Setting Name="FirewallList" Type="System.Collections.Generic.List<NetFwTypeLib.INetFwRule2>" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="myTestDataList" Type="System.Collections.Generic.List<System.String>" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>
最后我将我的列表保存在FormClosing上:Properties.Settings.Default["FirewallList"] = RuleList;
但是,当我尝试从用户设置加载规则时
RuleList = Properties.Settings.Default["FirewallList"] as List<INetFwRule2>;
我收到一个null异常错误。
我的结束表格:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// saving windows size and location
Properties.Settings.Default.FormSize = this.Size;
Properties.Settings.Default.Location = this.Location;
// saving RuleList
Properties.Settings.Default["FirewallList"] = RuleList;
// saving list of random Strings
Properties.Settings.Default.myTestDataList = new List<String>();
Properties.Settings.Default.myTestDataList.Add("stack");
Properties.Settings.Default.myTestDataList.Add("overflow");
Properties.Settings.Default.myTestDataList.Add(".com");
// saving all settings
Properties.Settings.Default.Save();
}
PS:我是否正确将列表保存到用户设置?例如,自定义.txt文件是否适合我的情况?
答案 0 :(得分:0)
在运行时使用设置。看看MSDN here:
访问用户设置并为其指定新值,如以下示例所示:
Properties.Settings.Default.myColor = Color.AliceBlue;
如果要在应用程序会话之间保留对用户设置的更改,请调用Save方法,如以下代码所示:
Properties.Settings.Default.Save();