Вы должны использовать сериализатор .... двоичные сериализаторы являются самыми быстрыми и наиболее эффективными, но не широко поддерживаются платформами, отличными от .Net, но они поддерживают события Serializaition, так что вы получаете более точный контроль над процессом сериализации. Используйте сериализатор по вашему выбору, чтобы сохранить состояние, или программным путем проделайте это долгий путь, используя файл confile, сохраните все развернутые узлы и заново отрисовайте его вручную. Это достойный академический опыт, но не лучший способ сделать это.
Сериализация - большая глава, прочитайте ее и выберите класс, который соответствует вашим потребностям. Помните, что если ваше приложение предназначено для работы с платформами, отличными от .Net, тогда лучше использовать XML или SOAP !!!