List 未保存在 settings.settings 中
本文关键字:settings 存在 保存 myClass List | 更新日期: 2023-09-27 18:33:09
我正在尝试将List<T>
保存到项目的设置文件中。
我已经编辑了设置.settings文件并添加了
<Setting Name="CustomTabs" Type="System.Collections.Generic.List<CustomTabItem>" Scope="User">
<Value Profile="(Default)" />
</Setting>
并编辑了设置设计器.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;
}
}
因此,列表类型在设置-gui中可用。
现在,如果我Properties.Settings.Default.CustomTabs.Add(tab);
列表被填满,但是如果我调用Save();
并重新启动应用程序,列表将再次为空。
我是否缺少使其工作的东西?我正在使用Visual Studio 2015。
您不必更改设置。设置文件
尝试移除该设置
<Setting Name="CustomTabs" Type="System.Collections.Generic.List<CustomTabItem>" Scope="User">
<Value Profile="(Default)" />
</Setting>
从设置.设置文件
此外,请记住在应用程序启动期间读回存储的"自定义选项卡"设置值。
编辑:2即使像下面这样更改设置.settings文件也不会造成伤害:
<Setting Name="myTestDataList" Type="System.Collections.Generic.List<TestData>" Scope="User">
<Value Profile="(Default)" />
</Setting>
示例应用程序仍能够在下次应用程序启动期间检索以前的数据。
编辑:我做了一个示例应用程序:
在设置中手动添加在下面设置。设计师.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; }
}
按钮-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>;
}