Visual C#自定义类类型设置赢得';救不了

Visual C#自定义类类型设置赢得';救不了,c#,.net,visual-studio,collections,C#,.net,Visual Studio,Collections,我有一个自定义类及其集合,我想用它在我的Settings.default中创建条目。我使用名称空间上的browse(…)按钮在设计器中设置了类型,在给定会话中,它可以正常工作。我可以从我的类(或者更确切地说,这些类的对象)中存储和获取值 但是设置不会被保存。 我曾经在我的设置中实现过我的自定义类,我正在尝试一些技巧,比如保存它们——但这里运气不好 如何保存自定义对象类? 最后一个类中的类型很普通,只有字符串、整数和布尔值 更新: 这不是集合序列化问题,包含单个字符串的简单类也不会持久化。我将代码

我有一个自定义类及其集合,我想用它在我的Settings.default中创建条目。我使用名称空间上的browse(…)按钮在设计器中设置了类型,在给定会话中,它可以正常工作。我可以从我的类(或者更确切地说,这些类的对象)中存储和获取值

但是设置不会被保存。 我曾经在我的设置中实现过我的自定义类,我正在尝试一些技巧,比如保存它们——但这里运气不好

如何保存自定义对象类? 最后一个类中的类型很普通,只有字符串、整数和布尔值

更新: 这不是集合序列化问题,包含单个字符串的简单类也不会持久化。我将代码更改为一个更简单的示例


它总是以myset为空而结束

我能够重现非持久性问题,并且能够使事情正常进行

如果您想通过代码创建新设置,下面是一个简单的工作示例

public partial class Form1 : Form
{
    private FormSettings frmSettings1 = new FormSettings();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.textBox1.Text = frmSettings1.FormText;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        frmSettings1.FormText = textBox1.Text;
        this.Close();
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        frmSettings1.Save();
    }

}

//Application settings wrapper class
sealed class FormSettings : ApplicationSettingsBase
{
    [UserScopedSettingAttribute()]
    public String FormText
    {
        get { return (String)this["FormText"]; }
        set { this["FormText"] = value; }
    }
}
我没有在“项目属性设置”选项卡上添加新设置。 我还避免使用Properties.Settings.Default

我发现Properties.Settings.Default不会持久化,通过测试,它只对添加到“项目属性设置”选项卡的设置有效(持久化)


如果您想尝试,应该改用MyNameSpace.Properties.Settings.Default而不是普通的Properties.Settings.Default。这很重要

我能够重现非持久性问题,并且能够使事情顺利进行

如果您想通过代码创建新设置,下面是一个简单的工作示例

public partial class Form1 : Form
{
    private FormSettings frmSettings1 = new FormSettings();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.textBox1.Text = frmSettings1.FormText;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        frmSettings1.FormText = textBox1.Text;
        this.Close();
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        frmSettings1.Save();
    }

}

//Application settings wrapper class
sealed class FormSettings : ApplicationSettingsBase
{
    [UserScopedSettingAttribute()]
    public String FormText
    {
        get { return (String)this["FormText"]; }
        set { this["FormText"] = value; }
    }
}
我没有在“项目属性设置”选项卡上添加新设置。 我还避免使用Properties.Settings.Default

我发现Properties.Settings.Default不会持久化,通过测试,它只对添加到“项目属性设置”选项卡的设置有效(持久化)


如果您想尝试,应该改用MyNameSpace.Properties.Settings.Default而不是普通的Properties.Settings.Default。这很重要

SettingsSerializeAs属性必须像我们的代码那样指定二进制。-来自您基于的教程。去试试。@Ephraim:你是说
[settingsserializas(settingsserializas.Binary)]
?起初我有一个,没有成功:/@Ephraim我恢复到二进制,结果相同-你知道吗?SettingsSerializeAs属性必须像我们的代码一样指定二进制。-来自您基于的教程。去试试。@Ephraim:你是说
[settingsserializas(settingsserializas.Binary)]
?起初我有一个,没有成功:/@Ephraim我恢复到二进制,结果是一样的-你知道吗?你完全正确!我从未想到我可以简单地构造一个继承ApplicationSettingsBase的新对象并保存到它,而不使用“正确”设置:)非常感谢!!非常感谢。几天前Visual Studio开始抱怨Properties.Settings.Default不包含我在项目属性设置GUI工具中输入的值。你的班级运转正常,你完全正确!我从未想到我可以简单地构造一个继承ApplicationSettingsBase的新对象并保存到它,而不使用“正确”设置:)非常感谢!!非常感谢。几天前Visual Studio开始抱怨Properties.Settings.Default不包含我在项目属性设置GUI工具中输入的值。相反,你的班级运转正常。