Настройки (Settings) проекта
Открыв среду программирования и создав новый проект
многие, думаю, наткнулись на закладку Настройки (Settings)
в свойствах (Properties) проекта, где можно создавать
настройки приложения, доступ к которым получается как
в design-, так и в run-time.
![Закладка настроек проекта Закладка настроек проекта](images/001.png)
Там же, в литературе и в справке написано, что
пользоваться этим очень удобно. Не знаю как вы, но я не
смог нигде найти примера, как этим всем пользоваться, а
если находил, то примеры оказывались до жути сложными.
Самостоятельные исследования же показали, что да,
действительно удобно и просто.
Рассмотрим такой пример: пусть у нас в настройках
сохраняется положение главного окна формы, содержимое
текстового поля и состояние чекбокса главной формы.
Начнем с формы. Накидаем на нее все нужные нам
контроли:
![Наша формочка Наша формочка](images/003.png)
Контроли назвал без какой-либо зауми: CheckBox и TextBox.
Теперь перейдем к настройкам. Открывается окно
настроек так: щелкните правой кнопкой мыши по узлу
проекта в Solution Explorer и выберите пункт Properties.
![Настройки проекта Настройки проекта](images/004.png)
Открывшееся окно открываем на закладке Settings - это
и есть настройки проекта. Я создал такие настройки:
![Настройки проекта Настройки проекта](images/005.png)
Теперь перейдем к реализации их использования.
Настройки будут считываться при загрузке формы и
сохраняться при закрытии:
private void SettingsForm_Load(object sender, EventArgs e)
{
try
{
Left = Properties.Settings.Default.MainFormLeft;
Top = Properties.Settings.Default.MainFormTop;
Height = Properties.Settings.Default.MainFormHeight;
Width = Properties.Settings.Default.MainFormWidth;
CheckBox.Checked = Properties.Settings.Default.CheckBoxState;
TextBox.Text = Properties.Settings.Default.TextBoxText;
}
catch (System.NullReferenceException)
{
}
}
private void SettingsForm_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.MainFormLeft = Left;
Properties.Settings.Default.MainFormTop = Top;
Properties.Settings.Default.MainFormHeight = Height;
Properties.Settings.Default.MainFormWidth = Width;
Properties.Settings.Default.CheckBoxState = CheckBox.Checked;
Properties.Settings.Default.TextBoxText = TextBox.Text;
Properties.Settings.Default.Save();
}
private void OKButton_Click(object sender, EventArgs e)
{
Close();
}
|
Обратите внимание на конструкцию try-catch при
загрузке. Отлов исключения сделан для того, чтобы
перехватить ошибки считывания незаполненных настроек.
В методе сохранения не забудьте вызвать метод Save().
Хоть с настройками работа и идет как со свойствами,
сохранять объект свойств нужно явно - автоматически он
этого не делает.
Таким образом, можно не думать, где и как лучше
сохранять настройки приложения - .NET берет эту
обузу на себя.
Update
Сохранять в настройках можно не только простые типы (числа,
строки и т.п.), но и сериализуемые классы. К примеру,
сохранение настроек размеров формы можно реализовать
таким образом:
![Настройки проекта Настройки проекта](images/006.png)
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.WindowState = this.WindowState;
if (WindowState == FormWindowState.Normal)
{
Properties.Settings.Default.FormLocation = this.Location;
Properties.Settings.Default.FormSize = this.Size;
}
Properties.Settings.Default.Save();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
this.WindowState = Properties.Settings.Default.WindowState;
if (Properties.Settings.Default.WindowState == FormWindowState.Normal)
{
this.Location = Properties.Settings.Default.FormLocation;
this.Size = Properties.Settings.Default.FormSize;
}
}
catch (System.NullReferenceException)
{
// Гасим исключение.
}
}
|
|