我正在尝试将List<T>
保存到项目的设置文件中。
我已经编辑了settings.settings文件并添加了
<Setting Name="CustomTabs" Type="System.Collections.Generic.List<CustomTabItem>" Scope="User">
<Value Profile="(Default)" />
</Setting>
并编辑了settings.designer.cs
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public global::System.Collections.Generic.List<CustomTabItem> CustomTabs {
get {
return ((global::System.Collections.Generic.List<CustomTabItem>)(this["CustomTabs"]));
}
set {
this["CustomTabs"] = value;
}
}
所以Listtype在settings-gui中可用。
现在,如果我Properties.Settings.Default.CustomTabs.Add(tab);
列表被填充,但是如果我调用Save();
并重新启动应用程序,则列表将再次为空。
我错过了一些让它起作用的东西吗?我正在使用Visual Studio 2015。
答案 0 :(得分:0)
您不必更改settings.settings文件
尝试删除设置
<Setting Name="CustomTabs" Type="System.Collections.Generic.List<CustomTabItem>" Scope="User">
<Value Profile="(Default)" />
</Setting>
来自settings.settings文件的
另外,请记住回读存储的&#34; CustomTabs&#34;应用程序启动期间的设置值。
编辑:2 即使settings.settings文件改变如下,也没有坏处:
<Setting Name="myTestDataList" Type="System.Collections.Generic.List<TestData>" Scope="User">
<Value Profile="(Default)" />
</Setting>
示例应用程序仍然能够在下次启动应用程序时检索以前的数据。
编辑: 我做了一个示例应用程序:
在settings.Designer.cs中手动添加以下设置
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public System.Collections.Generic.List<TestData> myTestDataList
{
get
{
return ((System.Collections.Generic.List<TestData>)(this["myTestDataList"]));
}
set
{
this["myTestDataList"] = value;
}
}
我的数据类
public class TestData
{
public string A {get; set;}
public string B { get; set; }
}
button-1:存储数据
private void button1_Click(object sender, EventArgs e)
{
List<TestData> myList = new List<TestData>();
myList.Add(new TestData() { A = "Str1", B = "Str2" });
myList.Add(new TestData() { A = "Str3", B = "Str4" });
Properties.Settings.Default["myTestDataList"] = myList;
Properties.Settings.Default.Save();
}
button-2:即使在下次运行应用程序时也会检索数据
private void button2_Click(object sender, EventArgs e)
{
List<TestData> myList = Properties.Settings.Default["myTestDataList"] as List<TestData>;
}