2015-09-03 2 views
0

Я создал UserControl, который представляет собой панель с различными элементами управления, используемыми для настройки пользовательских настроек и значений (например, возраст, высота, мужчина/женщина, ..., текстовое поле, радио кнопка, флажок, ...) и используется в основном приложении WinForm. Я ищу «лучший» или самый простой способ сохранения пользовательских параметров, чтобы они сохранялись при следующей загрузке приложения.UserControl: лучший способ сохранения значений/предпочтений

Если элементы управления были в основном WinForm, я бы использовал метод Properties.Settings (но их очень много, и я не хотел этого делать). Я также рассмотрел создание методов сохранения/загрузки и использование сериализации XML, но для этого потребуется ~ 40 свойств, которые будут созданы и обновлены. Я в порядке с методом XML, но решил, что попрошу вас, хорошие люди, посмотреть, есть ли более простой метод, о котором я не знал.

Спасибо!

+0

Свойства. Сериализация и сериализация типа XML специально разработаны для этой цели. Почему люди всегда хотят взломать простые варианты? Другой альтернативой было бы сохранить базу данных, но это больше усилий. Это не может быть проще, чем Properties.Settings. –

+0

@GlenThomas Вот почему я задал вопрос. Я был знаком с обоими методами и использовал их в прошлом для сохранения меньших наборов предпочтений, но думал, что спрошу, есть ли другой метод (например, что-то вроде Properties.Settings, но для UserControls), о котором я не знал. – jon

ответ

0

Я думаю, что комбинация сериализации и привязки данных - это путь, просто создайте класс, содержащий все параметры, которые вы хотите сохранить, привяжите их к элементам управления, сериализуйте и сохраните их при выходе из формы и загрузите их при загрузке формы:

_settings = new Settings() 
{ 
    Name = "Name", 
    Name1 = "Name1", 
    Name2 = "Name2" 
}; 
textBox1.DataBindings.Add("Text", _settings, "Name"); 
textBox2.DataBindings.Add("Text", _settings, "Name1"); 
textBox3.DataBindings.Add("Text", _settings, "Name2"); 
} 

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    XmlSerializer ser = new XmlSerializer(typeof(Settings)); 
    using (Stream stream = File.OpenWrite("settings.xml")) 
    { 
     ser.Serialize(stream, _settings); 
    } 
} 
+0

Спасибо, я сделаю это. Выглядит хорошо. – jon