Сериализация MDI Winforms для постоянства - PullRequest
2 голосов
/ 15 мая 2010

В основном мой проект представляет собой приложение MDI Winform, в котором пользователь может настроить интерфейс, добавив различные элементы управления и изменив макет. Я хотел бы иметь возможность сохранять состояние приложения для каждого пользователя.

Я довольно много искал и нашел:

Как автоматически сохранить и автоматически загрузить все свойства в winforms C #?

Сохранить WinForm или элементы управления в файл

По сути, насколько я понимаю, лучший подход - это сериализация данных в XML, однако элементы управления winform не сериализуемы, поэтому я бы использовал суррогатные классы:

http://www.codeproject.com/KB/dotnet/Surrogate_Serialization.aspx

Теперь, мне нужно написать суррогатный класс для каждого из моих элементов управления? Мне нужно написать какой-то рекурсивный алгоритм, чтобы сохранить все мои элементы управления, каков наилучший подход для достижения этой цели? Как бы я тогда восстановил все окна, должен ли я использовать шаблон дизайна памяти для этого? Если я хочу реализовать несколько пользователей позже, должен ли я использовать Nhibernate для хранения всех данных объекта в базе данных? Я все еще пытаюсь обдумать проблему, и если у кого-то есть опыт или совет, я был бы очень признателен, спасибо

Ответы [ 2 ]

1 голос
/ 15 мая 2010

Вы не хотите сериализовать фактические экземпляры управления. Они должны быть созданы и уничтожены вместе с Form, в котором они находятся. Скорее посмотрите, что вы позволяете пользователю настраивать. Расположение и положение? Хорошо, сохраните координаты Top и Left для каждого элемента управления вместе с идентификатором элемента управления. Вы позволяете пользователю добавлять новые элементы управления? Сохраните их идентификаторы вместе с идентификатором типа, чтобы, когда пришло время для перезагрузки, вы могли воссоздать элементы управления в их предыдущей позиции.

Независимо от того, используете ли вы XML или какой-либо другой формат, нет лучшего подхода или наилучшей практики, выберите, что имеет смысл для вашего проекта. С XML легко справиться с форматом, с отличной поддержкой в ​​.Net Framework.

0 голосов
/ 10 декабря 2010

Я знаю, что есть программное обеспечение LinsUI Layout Manager, которое очень хорошо справляется с вашими проблемами.У них есть бесплатная версия для заинтересованных разработчиков. Вы можете проверить сайт .Cheer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...