Как сохранить данные с WinForm?
Вообще, я бы сделал бы модель данных, привязал бы ее к контролам через DataBindings и сохранял/загружал бы уже именно ее.
Пример с формой входа (на форме два текстовых поля, txtUserName и txtPassword, и две кнопки, buttonSave и buttonLoad):Формаpublic partial class Form1 : Form
{
    private readonly LoginViewModel viewModel;

    public Form1()
    {
        InitializeComponent();

        viewModel = new LoginViewModel();

        txtUserName.DataBindings.Add(new Binding("Text", viewModel, "UserName", false, DataSourceUpdateMode.OnPropertyChanged));
        txtPassword.DataBindings.Add(new Binding("Text", viewModel, "Password", false, DataSourceUpdateMode.OnPropertyChanged));

    }

    private void buttonSave_Click(object sender, EventArgs e)
    {
        var file = GetFilePath();

        using (var buffer = File.OpenWrite(file))
        {
            var formatter = new BinaryFormatter();

            formatter.Serialize(buffer, viewModel);
        }
    }

    private void buttonLoad_Click(object sender, EventArgs e)
    {
        var model = LoadContent() as LoginViewModel;

        if (model != null)
        {
            viewModel.Password = model.Password;
            viewModel.UserName = model.UserName;
        }
    }

    private static object LoadContent()
    {
        var file = GetFilePath();

        if (!File.Exists(file))
            return null;

        using (var buffer = File.OpenRead(file))
        {
            var formatter = new BinaryFormatter();

            try
            {
                return formatter.Deserialize(buffer);
            }
            catch
            {
                //TODO Add error handling
                return null;
            }
        }
    }

    private static string GetFilePath()
    {
        var directory = Path.GetDirectoryName(typeof(Form1).Assembly.Location);
        return Path.Combine(directory, "store.txt");
    }
}Модель:[Serializable]
public class LoginViewModel : INotifyPropertyChanged
{
    private string _userName;
    private string _password;

    public string UserName
    {
        get { return _userName; }
        set
        {
            _userName = value;
            NotifyPropertyChanged(nameof(UserName));
        }
    }

    public string Password
    {
        get { return _password; }
        set
        {
            _password = value;
            NotifyPropertyChanged(nameof(Password));
        }
    }

    private void NotifyPropertyChanged(string name)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    }

    [field: NonSerialized]
    public event PropertyChangedEventHandler PropertyChanged;
}
Как такого прямого процесса сериализации и десереализации формы нет, т.к. там очень много вещей в бэкграунде (свойства, события и т.п.), которые мешают этому процессу.
Один из вариантов обхода, это именно DataBindings, как я показал на примере.
С этим все понятно. 
Грубо говоря запись осуществляется так:
sw.WriteLine(txbUserName.Text); //сохранение имени пользователя из textbox
sw.WriteLine(txbUserPassword.Text);//сохранение пароля пользователя из textbox
С двумя контролами это нормально. Но когда их штук 20 на форме. Да еще и разные. Все тоже в ручную? Нет такого WinForm->File->WinForm?
Нашел по этому поводу типа статьи. 
www.cyberforum.ru/windows-forms/thread1558189.html