小编use*_*663的帖子

如何使用ApplicationSettingsBase将自定义类保存到用户设置?

我正在尝试将自定义类保存到用户设置但没有取得多大成功.

我在Visual Studio 2010中使用Target framework =".NET Framework 4"创建了一个测试项目.主窗体有两个文本框,用于显示和编辑普通测试字符串以及我的自定义类中的"标题"字段; 连同两个按钮加载和保存设置.

最后,我添加了两个设置"TestString"(一个普通的字符串值)和TestData(MyDataClass的类型 - 我在项目的Properties.Settings选项卡中通过从Type下拉列表中选择"Browse ..."然后手动输入"MyUserSettingsTest"来完成此操作.MyDataClass"在"选定类型"框中,因为它最初没有显示在可用类型列表中,但随后它出现在.

在启动应用程序并单击LoadSettings时,事件处理程序将加载纯字符串和MyData,如果失败,则会创建MyDataClass的新实例.然后,我可以在表单上编辑纯字符串并测试数据标题,然后单击SaveSettings.如果我然后重新编辑值,请再次单击"LoadSettings",将按预期为两个值恢复上次保存的值.到现在为止还挺好.

问题是退出应用程序并重新启动它时,普通的测试字符串恢复正常,但MyData对象不是!显然,代码是将MyData保存到内存中,但不是永久存储?

主要表格代码是:

using System;
using System.Windows.Forms;

namespace MyUserSettingsTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public MyDataClass MyData {get;set;}

        private void loadSettingsButton_Click(object sender, EventArgs e)
        {
            this.myTextBox.Text = Properties.Settings.Default.TestString;
            this.MyData = Properties.Settings.Default.TestData;

            if (this.MyData == null)
            {
                this.MyData = new MyDataClass() { ID = 1, Title = "Default New Title" };
            }

            this.myDataTitleTextBox.Text = this.MyData.Title;
        }

        private void saveSettingsButton_Click(object sender, …
Run Code Online (Sandbox Code Playgroud)

c# settings applicationsettingsbase

7
推荐指数
1
解决办法
2882
查看次数

标签 统计

applicationsettingsbase ×1

c# ×1

settings ×1