Нет способа реализовать это, как описано. Вы можете сохранить только одно / последнее состояние, поскольку нет способа определить, какую версию следует восстановить.
Но вы можете использовать именованное хранилище состояний для достижения цели.
Вы должны создать собственное хранилище, которое должно предоставлять два метода
interface IStateStorage
{
UIState LoadState(string name);
void SaveState(string name, State state);
}
Вы можете сохранить или восстановить состояние пользовательского интерфейса в любое время, когда вам это нужно, загрузив состояние с другим именем.
В случае возникновения вопросов вы можете дважды сохранить состояние пользовательского интерфейса.
Сначала он сохранит состояние по умолчанию ss.SaveState («default», состояние), которое перезапишет состояние по умолчанию.
Во второй раз он сохранит именованное состояние ss.SaveState ("a", state), которое перезапишет именованное состояние.
При открытии формы вы сможете выбрать, какое состояние должно быть восстановлено, по умолчанию одно или другое с именем.