Сделайте ваши пользовательские данные сериализуемыми, добавив ключевое слово:
[Serializable]
выше вашей структуры данных. Когда вы загружаете диалоговое окно, загружаете вашу сериализованную структуру с диска, а когда вы покидаете диалоговое окно, сохраняете структуру данных.
С точки зрения стиля, вам, вероятно, не следует изменять данные в диалоговом окне, пока оно не будет закрыто (если оно модальное).
Для сохранения:
private bool Save(String inFileName, MyObject inObject){
try {
FileStream theStream = File.Open(inFileName, FileMode.Create);
BinaryFormatter theFormatter = new BinaryFormatter();
theFormatter.Serialize(theStream, inObject);//add it to the end there
theStream.Dispose();
theStream.Close();
} catch{
return false;
}
return true;
}
Для загрузки:
private MyObject Read(String inFileName){
MyObject theReturn = null;
try {
FileStream theStream = File.Open(inFileName, FileMode.Open, FileAccess.Read);
BinaryFormatter theFormatter = new BinaryFormatter();
theReturn = (CImageData)theFormatter.Deserialize(theStream);//add it to the end there
theStream.Dispose();
theStream.Close();
}
catch {
return null;
}
return theReturn;
}
Вы также можете использовать «использование» в потоке, но я думаю, что этот код довольно прост. Это также означает, что вы можете добавить больше элементов в MyObject.
Редактировать: для шифрования вы можете добавить в AES или что-то подобное. Это может быть излишним для вас, и сохранение файла в двоичном виде может сделать его читаемым для чего-то вроде блокнота, но не легко редактируемым. Вот длинное объяснение реального шифрования:
http://msdn.microsoft.com/en-us/magazine/cc164055.aspx