В мобильных приложениях программа может иметь разные "экраны", при этом они все как бы в одной форме. Вопрос в том, как сделать нечто такое же в WinForms. Но реализация вызывает кучу вопросов и сложностей.
Например, MDI явно не то, потому что формы не должны быть независимы, а должна отображаться только одна активная. Если же показывать модальные окна (Form.ShowDialog), то нужно обрабатывать их закрытие пользователем, да и выглядит не очень. Ну и form1.Hide() form2.Show() это как по мне совсем уж костыль, и, опять же, нужно предусмотреть возможные закрытия форм, подстраивать их размер и т.д.
Ближе всего мне подошел бы TabControl, только переход по разным табам не должен зависеть от нажатий на них пользователем.
Надеюсь, что мой вопрос можно понять (
edward_freedom, На самом деле, очень многие пишут на win forms.
Только естественно не на голом, используют тот же devexpress или другие библиотеки компонентов. Где серьезное приложение можно создать двумя кликами, написан в 3 строчки кода.
twobomb, девэспресс во первых не и дешевых, во вторых, вряд ли сама библиотека написана на винформс, а наверное на плюсах и рендерится на видеокарте, а не процессоре
edward_freedom, не уверен, мне приходилось видеть с каким трудом некоторые люди отказывались от использовать фреймов, аргументируя тем что "так проще" и т.д. Я считаю лучше с самого начала стараться делать правильно чем потом переучиваться
Используйте обычный UserControl в качестве "страницы" (экраны), а для их отображения выберите ту панель которая подходит. В простейшем случае это может быть обычная Panel