Я работал над программой для автоматизации моих проверок резервного копирования с помощью резервного копирования LogMeIn (программа на основе форм Windows). Теперь мне нужен способ хранения пользовательских настроек, чтобы легко сохранять информацию. Я никогда не работал с настройками приложения / пользователя, которые несколько «встроены» - и решил попробовать, но столкнулся с проблемами.
На данный момент я добавил четыре параметра:
IncludeCriteria (Specialized.StringCollection)
ExcludeCriteria (Specialized.StringCollection)
ReportPath (строка)
ReportType (int)
Но поведение не действует, как ожидалось (см. Рисунок). После сохранения некоторых значений в моей программе я возвращаюсь к редактированию / просмотру значений моих настроек с помощью редактора настроек VS 2008. Ни одно из моих значений не сохранено. Хотя я думаю, что это может быть из-за того, что эти значения являются просто значениями по умолчанию, разве это не было бы, где они могут быть сохранены / прочитаны / изменены?
Вот мой код формы загрузки (все еще очень неопределенный):
private void setupForm()
{
txtPath.Text = BackupReport.Properties.Settings.Default.ReportPath == null ? "" : BackupReport.Properties.Settings.Default.ReportPath;
if (BackupReport.Properties.Settings.Default.ReportType == 0)
{
radioHTML.Checked = true;
}
else
radioExcel.Checked = true;
if (BackupReport.Properties.Settings.Default.IncludeCriteria.Count > 0)
{
listIncludeCriteria.DataSource = Properties.Settings.Default.IncludeCriteria;
//foreach (string s in Properties.Settings.Default.IncludeCriteria)
// listIncludeCriteria.Items.Add(s);
}
if (BackupReport.Properties.Settings.Default.ExcludeCriteria.Count > 0)
{
listExcludeCriteria.DataSource = BackupReport.Properties.Settings.Default.ExcludeCriteria;
//foreach (string s in Properties.Settings.Default.ExcludeCriteria)
// listExcludeCriteria.Items.Add(s);
}
}
listIncludeCriteria - это просто список. Когда пользователь сохраняет, я вызываю этот метод:
private void saveSettings()
{
//var settings = BackupReport.Properties.Settings;
if (txtPath.Text != "")
{
BackupReport.Properties.Settings.Default.ReportPath = txtPath.Text;
}
if (listIncludeCriteria.Items.Count > 0)
{
//BackupReport.Properties.Settings.Default.IncludeCriteria = (StringCollection)listIncludeCriteria.Items.AsQueryable();
foreach (var i in listIncludeCriteria.Items)
{
if (!isIncludeDuplicate(i.ToString()))
BackupReport.Properties.Settings.Default.IncludeCriteria.Add(i.ToString());
}
}
if (listExcludeCriteria.Items.Count > 0)
{
//BackupReport.Properties.Settings.Default.ExcludeCriteria = (StringCollection)listExcludeCriteria.Items.AsQueryable();
foreach (var i in listExcludeCriteria.Items)
{
if (!isExcludeDuplicate(i.ToString()))
Properties.Settings.Default.ExcludeCriteria.Add(i.ToString());
}
}
if (radioExcel.Checked == true)
BackupReport.Properties.Settings.Default.ReportType = 1;
else
BackupReport.Properties.Settings.Default.ReportType = 0;
BackupReport.Properties.Settings.Default.Save();
//Properties.Settings.Default.Save();
this.DialogResult = DialogResult.OK;
this.Close();
}
Странно то, что когда форма загружается, путь, который я указал в первый раз, кажется, подходит (ReportPath) - даже списки заполнены кучей дерьма, которое я вставил, - но я не могу найти эти значения где-либо.
Буду признателен за любую помощь!
Josh