Счетчик HotLog

На главнуюЧто я делаю...Программы автора и не только...Творчество
Статьи автораКнига отзывов и предложенийОбо мне, любимомФотоальбом

 
 

Настройки (Settings) проекта

Открыв среду программирования и создав новый проект многие, думаю, наткнулись на закладку Настройки (Settings) в свойствах (Properties) проекта, где можно создавать настройки приложения, доступ к которым получается как в design-, так и в run-time.

Закладка настроек проекта

 Там же, в литературе и в справке написано, что пользоваться этим очень удобно. Не знаю как вы, но я не смог нигде найти примера, как этим всем пользоваться, а если находил, то примеры оказывались до жути сложными.

Самостоятельные исследования же показали, что да, действительно удобно и просто.

Рассмотрим такой пример: пусть у нас в настройках сохраняется положение главного окна формы, содержимое текстового поля и состояние чекбокса главной формы.

Начнем с формы. Накидаем на нее все нужные нам контроли:

Наша формочка

Контроли назвал без какой-либо зауми: CheckBox и TextBox. Теперь перейдем к настройкам. Открывается окно настроек так: щелкните правой кнопкой мыши по узлу проекта в Solution Explorer и выберите пункт Properties.

Настройки проекта

Открывшееся окно открываем на закладке Settings - это и есть настройки проекта. Я создал такие настройки:

Настройки проекта

Теперь перейдем к реализации их использования. Настройки будут считываться при загрузке формы и сохраняться при закрытии:

        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

Сохранять в настройках можно не только простые типы (числа, строки и т.п.), но и сериализуемые классы. К примеру, сохранение настроек размеров формы можно реализовать таким образом:

Настройки проекта

        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)
{
// Гасим исключение.
}
}
 
 

16.03.2007-10.12.2009

 
     
Hosted by uCoz