Matheus, antes que um moderador te responda - provavelmente um irá - digo para você que o Fórum do MSDN não cria código para você, estamos aqui para tirar dúvidas e contribuir em conhecimento. O que você perguntou é muito vago; depende do seu programa, o
que você tem "na tela" que você quer salvar, você provavelmente precisará de estratégias para cada um dos Forms e/ou dados (pois você pode salvar coisas que vieram de banco de dados por exemplo, e ao reabrir o registro no banco foi apagado ... e
ai?) que você quer salvar.
Uma coisa em comum no entanto é você marcar as classes que deseja salvar com "Serializable" e chamar a serialização da mesma. Algumas classes não são serializáveis, então para cada uma delas você precisará de uma estratégia para restaurar e gravar.
Outra forma é ser simplista e reduzir o que você está salvando, por exemplo: o usuário estava em um Form de cadastro de cliente, vendo o cadastro do cliente ID 350 (ID do cadastro salvo no banco de dados), então guarde isso num TXT/INI/XML/JSON ... "Cli:350".
Usando seu próprios códigos você pode carregar o arquivo de configurações (ou salvar no registro do windows) para que quando o programa abra, ele carregue o Form que está associado ao parâmetro "cli" e abra o registro do banco de dados de ID "350".
Se for um Form de pesquisa (que tenha uma tabela com o resultado de uma consulta SQL da qual o usuário iria selecionar o registro desejado) salve algo como "consulta:cli:[sentença em sql que o usuário fez]" ... acho que você já entendeu a ideia.