当用户退出配置表单(不是我的主窗体)时,我正在尝试保存我的应用程序设置。它会将设置保存在内存中,因为当我再次打开表单时,它将保留我配置的数据,但不会将其保存到磁盘中。这是它将xml文件保存到的filepath
C:\Users\david_000\AppData\Localcompany名称\1.0.0.0。
我在实现UserScopedSetting文件的类中使用ApplicationSettingsBase (),所以当我调用时,它应该保存,
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包含多个属性,该类使用的是可序列化属性。但是,当我保存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>如对此有任何建议,将不胜感激。
发布于 2015-06-19 23:41:34
如果没有一个可靠地再现问题的好的、最小的、完整的代码示例,就不可能确切地说出问题是什么。
但是,根据您发布的内容,似乎您可能误解了设置设计器与自定义ApplicationSettingsBase类之间的关系。
特别是,Properties.Settings.Default通常会返回一个名为Settings的设计器创建的类的实例。调用Properties.Settings.Default.Save();只会保存该对象中的值,而不会保存其他类中的值。
如果您有一个单独的类DeviceConfiguration,您需要保存它(就像在您发布的代码中显示的那样),您需要显式地处理它。仅仅拥有一个ApplicationSettingsBase子类的实例是做不到的。您需要自己调用自定义子类上的Save()方法。
还请参阅MSDN上的如何:创建应用程序设置。
https://stackoverflow.com/questions/30948653
复制相似问题