首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存用户作用域设置(ApplicationSettingsBase)

保存用户作用域设置(ApplicationSettingsBase)
EN

Stack Overflow用户
提问于 2015-06-19 23:23:06
回答 1查看 7K关注 0票数 1

当用户退出配置表单(不是我的主窗体)时,我正在尝试保存我的应用程序设置。它会将设置保存在内存中,因为当我再次打开表单时,它将保留我配置的数据,但不会将其保存到磁盘中。这是它将xml文件保存到的filepath

C:\Users\david_000\AppData\Localcompany名称\1.0.0.0。

我在实现UserScopedSetting文件的类中使用ApplicationSettingsBase (),所以当我调用时,它应该保存,

代码语言:javascript
复制
Properties.Settings.Default.Save(); 

这是我使用ApplicationSettingsBase的类

代码语言:javascript
复制
public class DeviceConfiguration : ApplicationSettingsBase
{
    /// <summary>
    /// Initializes a new instance of the <see cref="DeviceConfiguration"/> class.
    /// </summary>
    public DeviceConfiguration()
        : base()
    {
        this.MasterDevices = new BindingList<Device>();
        this.SlaveDevices = new BindingList<Device>();
    }

    [UserScopedSetting()]
    [SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Xml)]
    public BindingList<Device> MasterDevices
    {
        get
        {
            return this["MasterDevices"] as BindingList<Device>;
        }

        set
        {
            this["MasterDevices"] = value;
        }
    }

    [UserScopedSetting()]
    [SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Xml)]
    public BindingList<Device> SlaveDevices
    {
        get
        {
            return this["SlaveDevices"] as BindingList<Device>;
        }

        set
        {
            this["SlaveDevices"] = value;
        }
    }
}

我的BindingList包含多个属性,该类使用的是可序列化属性。但是,当我保存xml文件时,它只保存以下内容:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <userSettings>
        <[company.project].Properties.Settings>
            <setting name="IpAddressBESS" serializeAs="String">
                <value>192.168.3.254</value>
            </setting>
            <setting name="PortBESS" serializeAs="String">
                <value>504</value>
            </setting>
            <setting name="IpAddressInverter" serializeAs="String">
                <value>192.168.3.200</value>
            </setting>
            <setting name="PortInverter" serializeAs="String">
                <value>502</value>
            </setting>
            <setting name="StartDate" serializeAs="String">
                <value>04/08/2015 08:00:00</value>
            </setting>
            <setting name="EndDate" serializeAs="String">
                <value>04/08/2015 16:00:00</value>
            </setting>
            <setting name="DeviceConfig" serializeAs="Xml">
                <value />
            </setting>
        </[company.project].Properties.Settings>
    </userSettings>
</configuration>

如对此有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-19 23:41:34

如果没有一个可靠地再现问题的好的、最小的、完整的代码示例,就不可能确切地说出问题是什么。

但是,根据您发布的内容,似乎您可能误解了设置设计器与自定义ApplicationSettingsBase类之间的关系。

特别是,Properties.Settings.Default通常会返回一个名为Settings的设计器创建的类的实例。调用Properties.Settings.Default.Save();只会保存该对象中的值,而不会保存其他类中的值。

如果您有一个单独的类DeviceConfiguration,您需要保存它(就像在您发布的代码中显示的那样),您需要显式地处理它。仅仅拥有一个ApplicationSettingsBase子类的实例是做不到的。您需要自己调用自定义子类上的Save()方法。

还请参阅MSDN上的如何:创建应用程序设置

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30948653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档