如何在Settings.Default上保存List <inetfwrule2>?

时间:2017-08-15 14:05:48

标签: c#

我的表单中有一个ruleList,我想保存其中的每个项目,并在我再次启动应用程序时加载值。

所以我在属性中创建了一个新的设置选项卡 - &gt;设置

编辑的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&lt;NetFwTypeLib.INetFwRule2&gt;" Scope="User">
      <Value Profile="(Default)" />
    </Setting>
    <Setting Name="myTestDataList" Type="System.Collections.Generic.List&lt;System.String&gt;" 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文件是否适合我的情况?

1 个答案:

答案 0 :(得分:0)

在运行时使用设置。看看MSDN here

访问用户设置并为其指定新值,如以下示例所示:

Properties.Settings.Default.myColor = Color.AliceBlue;

如果要在应用程序会话之间保留对用户设置的更改,请调用Save方法,如以下代码所示:

Properties.Settings.Default.Save();