Я пытаюсь получить настройки моего приложения, чтобы сохранить, когда пользователь выходит из формы конфигурации (а не моей основной формы). Он сохранит настройки в памяти, потому что, когда я снова открою форму, у меня будут данные, которые я все еще настроил, но она не сохранит их на диск. Это путь к файлу, который сохраняет файл 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;
}
}
}
My 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. Мне интересно, как сохранить настройки MasterDevices и SlaveDevices в настройках DeviceConfig. – Jondkess
Я не совсем уверен, что вы ожидали. XML, который вы показываете в своем вопросе, показывает элемент «DeviceConfig» в объекте «Настройки». Для сохранения данных этот способ потребует фактического свойства «DeviceConfig» в объекте «Настройки», потому что именно так появляются эти элементы. Зачем нужен отдельный подкласс ApplicationSettingsBase, если вы хотите, чтобы ваши конфигурации сохранялись в элементе «Настройки»? Почему бы просто не добавить их в основной объект «Настройки» в качестве новых свойств? –
Ну, это то, что я хотел бы сделать, но объект установки запрашивает значение, и я не знаю, как указать экземпляр класса как значения. Можно ли указать экземпляр класса как значение в настройках settings.settings? – Jondkess