Для начала добавим в файл FormOS7ru.cs следующие строки:
Это нам немного поможет в дальнейшей работе.
Теперь найдём в обозревателе решений файл с названием DefaultSettings.settings после двойного щелчка левой кнопкой мыши на нём, нам откроется окно настроек (рис. 5.1).
Из рисунка видно, что я уже ввёл два параметра: colorFona (цвет фона) и colorText (цвет текста). В поле «Тип» нужно указать System.Drawing.Color. В поле «Область» указываем «приложение». Программа сохранит эти настройки в папке с исполняемым файлом, но запретит нам изменять их в процессе работы. Что, в данном случае, очень полезно: будем использовать его для хранения «настроек производителя».
Далее в поле «Значение» указываем соответствующие значения цветов. У меня они совпадают со значениями, указанными для приложения по умолчанию в системе.
Теперь откроем окно настроек файла Settings.settings и введём такие же два параметра, но в поле «Область» укажем: «Пользователь» (рис. 5.2).
Эти настройки будут сохраняться в папке пользователя (C:\Users\\AppData\Local\\...).
Естественно, что если нужный файл не будет найден, произойдёт ошибка. Но об этом позднее.
Для начала мне захотелось, чтобы в этой программе язык ввода по умолчанию переключался сразу на русский (у меня в системе стоит английский).
Поэтому я вывел на экран значения параметра InputLanguageCollection:
Как вы, наверное, догадались, в результате я получил следующее сообщение:
Поэтому мне пришлось немного изменить функцию FormOS7ru, которая инициализирует форму (рис. 5.3).
Как видно из рисунка, сначала мы получаем список языков, установленных в системе. Затем, если язык ввода по умолчанию не тот, который нам нужен, мы перепроверяем список и находим нужный язык:
После этого устанавливаем его в качестве текущего языка ввода:
Теперь добавим функцию SettingsSave() (рис. 5.4).
Обратите внимание на строку
эта функция сохраняет текущие значения переменных в файл настроек.
Теперь позаботимся о возможности загрузить текущие настройки (рис. 5.5).
Однако, если файла настроек не существует, программа выдаст ошибку. Мы перехватываем исключение при помощи блока try…catch и просто создаём файл настроек, если его не существует (вызываем функцию SettingsSave()).
Теперь позаботимся о возможности вернуть настройки производителя (рис. 5.6).
Естественно, после загрузки настроек нам придётся сохранить их в качестве текущих (вызываем функцию SettingsSave()).
Есть ещё один очень удобный способ хранения настроек – при помощи xml-файла. Будем хранить в нём пользовательские настройки по умолчанию. Сначала опишем функцию сохранения настроек (рис. 5.7).
В языке C# есть простой способ сохранения данных таблицы DataTable в файл xml.
Просто создаём таблицу с именем «MyDefSet»
Затем, добавляем столбец:
Теперь добавляем строки со значениями цвета фона и цвета текста, попутно сохраняем эти же параметры в качестве текущих настроек:
И, наконец, сохраняем данные в файл xml:
здесь:
обратите внимание, что расширение файла не имеет значения. Он всё равно будет записан, как обычный xml.
Теперь опишем функцию загрузки настроек по умолчанию (рис. 5.8).
Обращаю ваше внимание, что записать данные из xml в таблицу можно только после того, как будет создана основа (набор столбцов с их правильными названиями – названия должны соответствовать тем, которые были при сохранении).
Теперь опишем функцию ConvertColor (рис. 5.9).
Трудность в том, что данные в xml сохраняются в виде стоки, поэтому мы используем функцию, в которой описываем разбор данных строки. Если открыть получившийся файл, мы увидим:
Причём в таблицу будут помещены данные:
Если изменить цвет, получится:
Отсюда ясно, почему функция ConvertColor выглядит именно так. Если не ясно, перечитайте предыдущий урок.
Теперь добавляем в функцию ConsoleKeyEnter вызов команды изменения настроек (рис. 5.10).
Естественно, сразу же нужно добавить новую команду в список:
Теперь добавим функцию изменения настроек (рис. 5.11).
Создадим массив для хранения списка команд:
Теперь добавим функцию для изменения настроек по умолчанию (рис. 5.12).
И ещё один массив для хранения списка команд:
Команду «отмена» добавим и в остальные списки. Она позволит нам выходить сразу к началу.
Теперь запускаем и наслаждаемся возможностью изменять и сохранять настройки.
Исходники можно скачать здесь: .
Жду отзывов и предложений
К списку статей Предыдущий уок следующий урок
DiamondTigeR
using System.Xml;
using System.Xml.Linq;
using System.Xml.Resolvers;
using System.Xml.Schema;
using System.Xml.Serialization;
using System.Xml.XPath;
using System.Xml.Xsl;
using System.IO;
using System.IO.Compression;
using System.IO.IsolatedStorage;
using System.IO.MemoryMappedFiles;
using System.IO.Pipes;
using System.IO.Ports;
using System.Data.Common;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.ProviderBase;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Xml.Linq;
using System.Xml.Resolvers;
using System.Xml.Schema;
using System.Xml.Serialization;
using System.Xml.XPath;
using System.Xml.Xsl;
using System.IO;
using System.IO.Compression;
using System.IO.IsolatedStorage;
using System.IO.MemoryMappedFiles;
using System.IO.Pipes;
using System.IO.Ports;
using System.Data.Common;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.ProviderBase;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
Это нам немного поможет в дальнейшей работе.
Теперь найдём в обозревателе решений файл с названием DefaultSettings.settings после двойного щелчка левой кнопкой мыши на нём, нам откроется окно настроек (рис. 5.1).
Рис. 5.1. Окно настроек файла DefaultSettings.settings.
Из рисунка видно, что я уже ввёл два параметра: colorFona (цвет фона) и colorText (цвет текста). В поле «Тип» нужно указать System.Drawing.Color. В поле «Область» указываем «приложение». Программа сохранит эти настройки в папке с исполняемым файлом, но запретит нам изменять их в процессе работы. Что, в данном случае, очень полезно: будем использовать его для хранения «настроек производителя».
Далее в поле «Значение» указываем соответствующие значения цветов. У меня они совпадают со значениями, указанными для приложения по умолчанию в системе.
Теперь откроем окно настроек файла Settings.settings и введём такие же два параметра, но в поле «Область» укажем: «Пользователь» (рис. 5.2).
Рис. 5.2. Окно настроек файла Settings.settings.
Эти настройки будут сохраняться в папке пользователя (C:\Users\\AppData\Local\\...).
Естественно, что если нужный файл не будет найден, произойдёт ошибка. Но об этом позднее.
Для начала мне захотелось, чтобы в этой программе язык ввода по умолчанию переключался сразу на русский (у меня в системе стоит английский).
Поэтому я вывел на экран значения параметра InputLanguageCollection:
InputLanguageCollection ilc = InputLanguage.InstalledInputLanguages;
MessageBox.Show(ilc[0].LayoutName+” “+ilc[1].LayoutName);
MessageBox.Show(ilc[0].LayoutName+” “+ilc[1].LayoutName);
Как вы, наверное, догадались, в результате я получил следующее сообщение:
США Русская
Поэтому мне пришлось немного изменить функцию FormOS7ru, которая инициализирует форму (рис. 5.3).
Рис. 5.3. Изменённая функция FormOS7ru.
Как видно из рисунка, сначала мы получаем список языков, установленных в системе. Затем, если язык ввода по умолчанию не тот, который нам нужен, мы перепроверяем список и находим нужный язык:
if(InputLanguage.DefaultInputLanguage.LayoutName!="Русская")
for (int i = 0; i < icount; i++)
{
if (ilc[i].LayoutName == "Русская")
{
ilang = i; i = icount;
}
}
for (int i = 0; i < icount; i++)
{
if (ilc[i].LayoutName == "Русская")
{
ilang = i; i = icount;
}
}
После этого устанавливаем его в качестве текущего языка ввода:
InputLanguage.CurrentInputLanguage = ilc[ilang];
Теперь добавим функцию SettingsSave() (рис. 5.4).
Рис. 5.4. Функция SettingsSave().
Обратите внимание на строку
Properties.Settings.Default.Save();
эта функция сохраняет текущие значения переменных в файл настроек.
Теперь позаботимся о возможности загрузить текущие настройки (рис. 5.5).
Рис. 5.5. Функция SettingsLoad().
Однако, если файла настроек не существует, программа выдаст ошибку. Мы перехватываем исключение при помощи блока try…catch и просто создаём файл настроек, если его не существует (вызываем функцию SettingsSave()).
Теперь позаботимся о возможности вернуть настройки производителя (рис. 5.6).
Рис. 5.6. Функция DefSettingsLoad().
Естественно, после загрузки настроек нам придётся сохранить их в качестве текущих (вызываем функцию SettingsSave()).
Есть ещё один очень удобный способ хранения настроек – при помощи xml-файла. Будем хранить в нём пользовательские настройки по умолчанию. Сначала опишем функцию сохранения настроек (рис. 5.7).
Рис. 5.7. Функция MyDefSetSave().
В языке C# есть простой способ сохранения данных таблицы DataTable в файл xml.
Просто создаём таблицу с именем «MyDefSet»
DataTable dt = new DataTable("MyDefSet");
Затем, добавляем столбец:
dt.Columns.Add("Nastroika");
Теперь добавляем строки со значениями цвета фона и цвета текста, попутно сохраняем эти же параметры в качестве текущих настроек:
dt.Rows.Add(textBoxConsole.BackColor); Properties.Settings.Default.colorFona = textBoxConsole.BackColor;
dt.Rows.Add(textBoxConsole.ForeColor); Properties.Settings.Default.colorText = textBoxConsole.ForeColor;
Properties.Settings.Default.Save();
dt.Rows.Add(textBoxConsole.ForeColor); Properties.Settings.Default.colorText = textBoxConsole.ForeColor;
Properties.Settings.Default.Save();
И, наконец, сохраняем данные в файл xml:
dt.WriteXml(strCurDir_Gpr+strMyDefSetFile_Gpr);
здесь:
private string strCurDir_Gpr = System.Environment.CurrentDirectory;//Получаем корневой каталог программы
private string strMyDefSetFile_Gpr = "\\Properties\\mydefset.settings";//Имя файла, который содержит настройки по умолчанию
private string strMyDefSetFile_Gpr = "\\Properties\\mydefset.settings";//Имя файла, который содержит настройки по умолчанию
обратите внимание, что расширение файла не имеет значения. Он всё равно будет записан, как обычный xml.
Теперь опишем функцию загрузки настроек по умолчанию (рис. 5.8).
Рис. 5.8. Функция MyDefSetLoad().
Обращаю ваше внимание, что записать данные из xml в таблицу можно только после того, как будет создана основа (набор столбцов с их правильными названиями – названия должны соответствовать тем, которые были при сохранении).
Теперь опишем функцию ConvertColor (рис. 5.9).
Рис. 5.9. Функция ConvertColor.
Трудность в том, что данные в xml сохраняются в виде стоки, поэтому мы используем функцию, в которой описываем разбор данных строки. Если открыть получившийся файл, мы увидим:
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
<MyDefSet>
<Nastroika>Color [Control]</Nastroika>
</MyDefSet>
<MyDefSet>
<Nastroika>Color [Black]</Nastroika>
</MyDefSet>
</DocumentElement>
<DocumentElement>
<MyDefSet>
<Nastroika>Color [Control]</Nastroika>
</MyDefSet>
<MyDefSet>
<Nastroika>Color [Black]</Nastroika>
</MyDefSet>
</DocumentElement>
Причём в таблицу будут помещены данные:
Color [Control]
Color [Black]
Color [Black]
Если изменить цвет, получится:
Color [A=<значение1>, R=<значение2>, G=<значение3>, B=<значение4>]
Отсюда ясно, почему функция ConvertColor выглядит именно так. Если не ясно, перечитайте предыдущий урок.
Теперь добавляем в функцию ConsoleKeyEnter вызов команды изменения настроек (рис. 5.10).
Рис. 5.10. Функция ConsoleKeyEnter с изменениями.
Естественно, сразу же нужно добавить новую команду в список:
private string[] arrsrtVopros_Gpr = { "вопрос", "выход", "консоль", "настройки" };
Теперь добавим функцию изменения настроек (рис. 5.11).
Рис. 5.11. Функция ConsoleKeyEnter_Nastroiki.
Создадим массив для хранения списка команд:
private string[] arrsrtVoprosNastroiki_Gpr = { "вопрос", "выход", "умолчания", "отмена", "сохранить" };
Теперь добавим функцию для изменения настроек по умолчанию (рис. 5.12).
Рис. 5.12. Функция ConsoleKeyEnter_Nastroiki_Umolchania.
И ещё один массив для хранения списка команд:
private string[] arrsrtVoprosNastroikiUmolchania_Gpr = { "вернуть", "вопрос", "выход", "загрузить", "сохранить", "отмена" };
Команду «отмена» добавим и в остальные списки. Она позволит нам выходить сразу к началу.
Теперь запускаем и наслаждаемся возможностью изменять и сохранять настройки.
Исходники можно скачать здесь: .
Жду отзывов и предложений
К списку статей Предыдущий уок следующий урок
DiamondTigeR
Автор: d.tiger. Дата: 12-03-2012, 20:57
Просмотров: 6008
В избранное:
Уважаемый посетитель, для доступа к ресурсам сайта OS-7.RU, а также для скачивания материалов - Вам необходимо зарегистрироваться либо войти под своим именем.
Комментарии (0)
Распечатать