我想让我的应用程序设置保存,当用户退出配置表单(不是我的mainform)。它会将设置保留在内存中,因为当我再次打开表单时,它会将我配置的数据保留在那里,但不会将其保存到磁盘。这是它将xml文件保存到的文件路径保存用户作用域设置(ApplicationSettingsBase)
C:\ Users \ david_000 \ AppData \ Local [公司名称] [项目名称] \ 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包含多个属性,并且该类正在使用[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>
任何意见,将不胜感激。
所以我调用save()方法,就像你在我的DeviceConfig子类中所建议的那样,并且将我的设置保存到我的用户配置文件中。但不是将其保存在DeviceConfig值中,而是创建了两个名为MasterDevices和SlaveDevices的新设置。我想知道如何在我的DeviceConfig设置中保存MasterDevices和SlaveDevices设置。 – Jondkess
我不确定你会发生什么。您在问题中显示的XML在“设置”对象中显示“DeviceConfig”元素。以这种方式保存数据将需要Settings对象中的实际“DeviceConfig”属性,因为这就是这些元素的显示方式。为什么要有一个单独的'ApplicationSettingsBase'子类,如果你希望你的配置保存在“Settings”元素下?为什么不把这些添加到主“设置”对象作为新属性? –
那么这是我想要做的,但设置对象要求一个值,我不知道如何给一个类的实例作为一个值。是否可以在settings.settings中将类的实例作为值? – Jondkess