[英]How do I save a custom class to user settings using 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()
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.