Обновление. Я установил новый поставщик настроек , и он работает хорошо. Сохраняет XML в папке приложения. Я также настроил INI-файлы для сохранения настроек. Использование как пользовательского пути, так и пользовательского имени файла. Это позволяет создавать несколько файлов INI. Это также работает очень хорошо.
Редактировать: Обновлен код (и инструкции), поэтому больше нет необходимости создавать какие-либо пользовательские папки вручную. Если он не существует, он будет создан.
Проект разработчика XML разработчиков находится здесь:
Поставщики настроек на Github
Проект разработчиков файлов INI (и демонстрационная версия) находится здесь:
C# Демонстрационная версия WinForms Ini File на Github
Ниже приведены инструкции по настройке нового провайдера настроек с файлом XML и последующие инструкции по сохранению настроек в INI-файлах (оба типа могут использоваться в одном проекте одновременно, так как я делаю здесь):
Использование нового поставщика настроек для сохранения настроек в файле XML:
1. Установите Настройки приложения (в Solution Explorer , щелкните правой кнопкой мыши приложение. Затем выберите: Свойства . Затем откройте: Настройки ) .
Name: txtFullName
Type: String
Scope: User
Value: John Doe
Name: txtSchool
Type: String
Scope: User
Value: Oxford
Name: txtClass
Type: String
Scope: User
Value: 4B
Name: chkActiveStudent
Type: bool
Scope: User
Value: True
2. Установите из NuGet нового поставщика настроек (в Solution Explorer щелкните правой кнопкой мыши: Ссылки . Затем выберите: Управление пакетами NuGet Затем выполните поиск: PortableSettingsProvider . Установите его.
3. В Program.cs изменить stati c void Main () . Добавьте к этому строки ниже.
//PortableSettingsProvider.SettingsFileName = "portable.config";
//PortableSettingsProvider.SettingsDirectory = "c:\\\testconfig\\\school";
//System.IO.Directory.CreateDirectory(PortableSettingsProvider.SettingsDirectory);
PortableSettingsProvider.ApplyProvider(Properties.Settings.Default);
Если принять настройки по умолчанию (файл конфигурации, portable.config , будет создан в папке приложений), правильно отредактированный stati c void Main () запись будет выглядеть следующим образом.
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//PortableSettingsProvider.SettingsFileName = "portable.config";
//PortableSettingsProvider.SettingsDirectory = "c:\\testconfig\\school";
//System.IO.Directory.CreateDirectory(PortableSettingsProvider.SettingsDirectory);
PortableSettingsProvider.ApplyProvider(Properties.Settings.Default);
Application.Run(new MyTestApp());
}
3a. Чтобы выбрать другое имя файла и местоположение, удалите комментарии (//) и измените свои предпочтения для имени файла и местоположения (двойные косые черты необходимы между именами папок). В этом примере я использую settings.config в качестве имени файла и c: \ testconfig \ school в качестве пути). В этом случае правильно отредактированная запись stati c void Main () будет выглядеть следующим образом.
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
PortableSettingsProvider.SettingsFileName = "settings.config";
PortableSettingsProvider.SettingsDirectory = "c:\\testconfig\\school";
System.IO.Directory.CreateDirectory(PortableSettingsProvider.SettingsDirectory);
PortableSettingsProvider.ApplyProvider(Properties.Settings.Default);
Application.Run(new MyTestApp());
}
3b. Если вы хотите, чтобы каталог настроек создавался в подпапке рабочего каталога приложений, измените код, включив в него имя подпапки (в этом примере я использую settings.config в качестве имени файла и Настройки как подпапка). В этом случае правильно отредактированная запись stati c void Main () будет выглядеть следующим образом.
static void Main()
{
Application.EnableVisualStyles();
PortableSettingsProvider.SettingsFileName = "settings.config";
var strSettingsDirectory = Directory.GetCurrentDirectory() + "\\Settings";
System.IO.Directory.CreateDirectory(strSettingsDirectory);
PortableSettingsProvider.SettingsDirectory = strSettingsDirectory;
PortableSettingsProvider.ApplyProvider(Properties.Settings.Default);
Application.Run(new MyTestApp());
}
4. Все еще в Program.cs , добавьте следующую строку в конец существующего , используя раздел .
using Bluegrams.Application;
5. В форме создайте несколько элементов управления (они будут соответствовать Настройки приложения , выполненным на шаге 1).
TextBox. Name: txtFullName
TextBox. Name: txtSchool
Textbox. Name: txtClass
Checkbox. Name: chkActiveStudent
Button. Name: btnLoadSettings Text: Load Config
Button. Name: btnSaveSettings Text: Save Config
6. Введите код для событий нажатия кнопок Load Config ( btnLoadSettings ).
private void btnLoadSettings_Click(object sender, EventArgs e)
{
txtName.Text = Properties.Settings.Default.txtName.ToString();
txtSchool.Text = Properties.Settings.Default.txtSchool.ToString();
txtClass.Text = Properties.Settings.Default.txtClass.ToString();
if (Properties.Settings.Default.chkActiveStudent == true)
{
chkActiveStudent.Checked = true;
}
else
{
chkActiveStudent.Checked = false;
}
}
7. Введите код для событий нажатия кнопок Сохранить конфигурацию ( btnSaveSettings ).
private void btnSaveSettings_Click(object sender, EventArgs e)
{
Properties.Settings.Default.txtName = txtName.Text;
Properties.Settings.Default.txtSchool = txtSchool.Text;
Properties.Settings.Default.txtClass = txtClass.Text;
if (chkActiveStudent.Checked == true)
{
Properties.Settings.Default.chkActiveStudent = true;
}
else
{
Properties.Settings.Default.chkActiveStudent = false;
}
Properties.Settings.Default.Save();
}
8. Вот и все.
Запустите приложение. Загрузите настройки с помощью первой кнопки). Внесите некоторые изменения в текст на элементах управления. Сохраните их, используя вторую кнопку.
Если вы не создали пользовательское имя файла и / или путь, то в папке вашего приложения должен появиться новый файл: portable.config .
Шахта находится по адресу: C: \ Users \ flakie \ source \ repos \ TestApp \ TestApp \ bin \ Debug
Файл можно открыть в формате txt / * Редактор 1218 * для проверки установки значений.
Если вы снова запустите приложение и загрузите настройки, вы должны увидеть новые значения.
Код для сохранения настроек в нескольких INI-файлах
Следующие инструкции проще выполнить. Они не требуют от вас установки Настройки приложения , поскольку они не используются. Настройки будут сохранены в 1 или более файлах INI.
Путь может быть изменен на лету (хотя установлено значение по умолчанию), как и имя файла для файла INI.
Снова будет использоваться собственная папка приложений в качестве места назначения по умолчанию (для файлов INI).
Вам потребуется изменить только файл Form.cs .
Демонстрацию (по ссылке выше) легко понять, и ее было достаточно, чтобы предоставить мне знания для создания этого примера (а я C# новичок).
9. Установите из NuGet пакет файлов INI (в Solution Explorer , щелкните правой кнопкой мыши: Ссылки . Затем выберите: Управление пакетами NuGet . Затем выполните поиск: PeanutButter.INI . Установите его.
10. В вашем файле Form.cs ( Form1.cs , если вы не изменили имя), добавьте следующую строку в конец существующего , используя раздел .
using PeanutButter.INIFile;
11. В вашем файле Form.cs прямо под строкой publi c частичный класс Form1: Form добавьте следующую единственную строку кода.
private IINIFile _loadedConfig;
Это должно выглядеть следующим образом.
public partial class Form1 : Form {
private IINIFile _loadedConfig;
12. На форме создайте еще две кнопки.
Button. Name: btnOpenIniFile Text: Open INI
Button. Name: btnSaveIniFile Text: Save INI
13. Введите код для события нажатия кнопки Open INI ( btnOpenIniFile ).
private void btnOpenIniFile_Click(object sender, EventArgs e) {
using(OpenFileDialog OpenFileIni = new OpenFileDialog()) {
var strSettingsDirectory = Directory.GetCurrentDirectory() + "\\Settings";
System.IO.Directory.CreateDirectory(strSettingsDirectory);
OpenFileIni.InitialDirectory = strSettingsDirectory;
OpenFileIni.Filter = "INI File|*.ini";
OpenFileIni.RestoreDirectory = true;
OpenFileIni.CheckFileExists = true;
OpenFileIni.CheckPathExists = true;
OpenFileIni.Title = "Open an INI Settings File";
if (OpenFileIni.ShowDialog() == DialogResult.OK)
{
_loadedConfig = new INIFile(OpenFileIni.FileName);
txtName.Text = _loadedConfig.HasSetting("UserSettings", "txtName") ? _loadedConfig["UserSettings"]["txtName"] : "";
txtSchool.Text = _loadedConfig.HasSetting("UserSettings", "txtSchool") ? _loadedConfig["UserSettings"]["txtSchool"] : "";
txtClass.Text = _loadedConfig.HasSetting("UserSettings", "txtClass") ? _loadedConfig["UserSettings"]["txtClass"] : "";
if (_loadedConfig["UserSettings"]["chkActiveStudent"] == "Checked")
{
chkActiveStudent.Checked = true;
}
else
{
chkActiveStudent.Checked = false;
}
}
}
}
14. Введите код для события нажатия кнопки Сохранить INI ( btnSaveIniFile ).
private void btnSaveIniFile_Click(object sender, EventArgs e)
{
using (SaveFileDialog SaveFileIni = new SaveFileDialog())
{
var strSettingsDirectory = Directory.GetCurrentDirectory() + "\\Settings";
System.IO.Directory.CreateDirectory(strSettingsDirectory);
SaveFileIni.InitialDirectory = strSettingsDirectory;
SaveFileIni.Filter = "INI File|*.ini";
SaveFileIni.Title = "Save an INI Settings File";
if (SaveFileIni.ShowDialog() == DialogResult.OK)
{
_loadedConfig = new INIFile(SaveFileIni.FileName);
_loadedConfig["UserSettings"]["txtName"] = txtName.Text;
_loadedConfig["UserSettings"]["txtSchool"] = txtSchool.Text;
_loadedConfig["UserSettings"]["txtClass"] = txtClass.Text;
if (chkActiveStudent.Checked == true)
{
_loadedConfig["UserSettings"]["chkActiveStudent"] = "Checked";
}
else
{
_loadedConfig["UserSettings"]["chkActiveStudent"] = "UnChecked";
}
_loadedConfig.Persist();
}
}
}
15. Вот и все. Запустите приложение.
Внесите некоторые изменения в текст в элементах управления текстового поля. Сохраните их, используя кнопку Сохранить INI .
Вам будет предложено ввести имя файла. Это может быть все что угодно (но в этом примере я использовал имя человека, которого я настроил в первом текстовом поле. Вам не нужно вводить расширение файла INI. Вы можете изменить местоположение, если вы будете sh.
Внесите еще некоторые изменения в текстовые поля, но , а не сохраните их. Нажмите кнопку Открыть INI . Найдите файл INI, который вы только что сохранили, и откройте его .
Текст, который вы только что изменили без сохранения, теперь должен быть заменен текстом, который вы сохранили в INI-файле.