簡體   English   中英

保存用戶范圍的設置(ApplicationSettingsBase)

[英]Saving user scoped settings (ApplicationSettingsBase)

我試圖讓我的應用程序設置在用戶退出配置表單(而不是我的主表單)時保存。 它將設置保留在內存中,因為當我再次打開該窗體時,它將保留我配置的數據,但是不會將其保存到磁盤。 這是將xml文件保存到的文件路徑

C:\\ Users \\ david_000 \\ AppData \\ Local [公司名稱] [項目名稱] \\ 1.0.0.0。

我在實現ApplicationSettingsBase文件的類中使用[UserScopedSetting()],因此在調用時應保存該文件,

Properties.Settings.Default.Save(); 

這是我使用ApplicationSettingsBase的課程

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包含多個屬性,並且該類正在使用[Serializable]屬性。 但是,當我保存xml文件時,它保存的只是:

<?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>

任何對此的建議將不勝感激。

沒有可靠,可靠地重現問題的良好, 簡短完整的代碼示例,就不可能確定問題出在哪里。

但是,根據您發布的內容,似乎您可能會誤解了設置設計器和自定義ApplicationSettingsBase類之間的關系。

特別是, Properties.Settings.Default通常將返回由Designer創建的名為Settings類的實例。 調用Properties.Settings.Default.Save(); 將僅保存該對象中的值,而不保存其他類中的值。

如果您有要保存的單獨的類DeviceConfiguration (如發布的代碼中所示),則需要顯式處理。 僅擁有ApplicationSettingsBase子類的實例將無法實現。 您需要自己在該自定義子類上調用Save()方法。

另請參見如何:在MSDN上創建應用程序設置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM