Работа с большим изобилием форм?
Смотря сколько всего форм.
Можно и не заморачиваться сильно. Достаточно Ссылку на первую (1), как я понял (Activation) хранить где-нибудь глобально, чтобы все формы видели (например, в классе Program.MainForm);
В событии Activated просто делать Program.Form1.Hide(); а в событиях Closing или Closed делать Program.Form1.Show()
Ну и да, если форм много, то тогда проще расширить класс Form -public abstract class MyForm : Form
{
    protected override void OnActivated(EventArgs e)
    {
        base.OnActivated(e);
        // TODO: Убедиться, что MainForm != null
        // System.Diagnostics.Debug.Assert(null != Program.MainForm);
        Program.MainForm.Hide(); 
    } // OnActivate

    protected override void OnDeactivate(EventArgs e)
    {
        base.OnDeactivate(e);
        // TODO: Убедиться, что MainForm != null
        // System.Diagnostics.Debug.Assert(null != Program.MainForm);
        Program.MainForm.Show(); 
    } // OnDeactivate
} // class MyForm
В общем, потом достаточно прописать в своей форме наследование не от Form, а от MyForm и всё. Любая форма будет вести себя так.
Если "MainForm" может изменяться от раза к разу, то её в конструктор новой формы надо будет передавать.
Оказалось не реально просто! =)private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
 
            using (var dialog = new Form2())
            {
                dialog.ShowDialog();
            }
 
            this.Show();
        }
Всем спасибо за участие!!