Хранение истории в Winforms Stack Overflow

У меня есть приложение, сделанное в winform с использованием C ++ (разработано в VS 2010). Графические интерфейсы имеют определенные текстовые поля, переключатели, флажки и т. Д. Для работы с программным обеспечением необходимо заполнить эти поля / кнопки / поля и т. Д.

Есть примерно 50 таких графических интерфейсов, каждый из которых содержит около 20 полей.

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

Какой самый простой и простой способ добиться этого?

1

Решение

Это лучше всего решить, используя шаблон MVC, где Модель содержит данные, которые были заполнены. Представление содержит способ его представления (например, в Winforms) И, наконец, контроллер, который помимо выполнения бизнес-логики должен будет выполнить некоторую работу (для сохранения состояния).

Я предпочитаю использовать сериализацию для этого. Вы можете сериализовать поля модели и прочитать их обратно (поля, которые необходимы только).

Если вам не нравится сериализация, вы можете попробовать записать в INI-файлы, которые легко изменить.

В-третьих, вы можете использовать базу данных mdf файл для хранения состояния.

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

1

Другие решения

Вы можете использовать реестр Windows с

WindowsFormName (подраздел)
———> ControlName (подраздел)
——————> ControlValue (подраздел)

Когда форма закрывается, вы сохраняете значения для каждого элемента управления в реестре.

Когда форма загружается, вы читаете значения

1

Если вас устраивает быстрое и грязное решение, вы можете попробовать это:

Реализуйте механизм сохранения:

  1. Итерация ко всем элементам управления формой (рекурсивно, если есть панели или
    другие контейнеры)
  2. Если элемент управления редактировать (или другой тип, который содержит
    данные) сохранить контрольный текст вместе с его именем
  3. Сохраните имя,
    пары значений (например, INI-файл)

Реализуйте механизм загрузки. Предполагается, что между значениями нет никаких зависимостей (если есть автоматически вычисляемые поля, не сохраняйте их)

  1. Загрузить значения из хранилища (если вы выбираете файлы, имя файла может быть именем формы)
  2. итерации ко всем элементам управления формы и, если вы найдете его имя в загруженных данных, установите значение

После реализации этот подход можно использовать для всех форм, и он будет справляться с добавлением / удалением элементов управления. Однако, если существуют бизнес-правила, возможно, лучше использовать подход MVC и сериализовать модель.

0
По вопросам рекламы [email protected]