¿Cómo puedo cerrar un formulario de inicio de sesión y mostrar el formulario principal sin que se cierre mi aplicación?

Tengo dos formas en mi proyecto (Iniciar sesión y Principal).

Lo que estoy tratando de lograr es que, si el inicio de sesión es exitoso, debo mostrar el formulario Principal y cerrar el formulario de inicio de sesión.

Tengo este método en el formulario de inicio de sesión que cierra el formulario de inicio de sesión cuando el inicio de sesión es exitoso. Pero la forma principal no se muestra.

public void ShowMain()
{
    if(auth()) // a method that returns true when the user exists.
    {             
        var main = new Main();
        main.Show();
        this.Close();
    }
    else
    {
        MessageBox.Show("Invalid login details.");
    }         
}

Intenté ocultar el formulario de inicio de sesión si el proceso de inicio de sesión es exitoso. Pero me molesta porque sé que mientras mi programa se está ejecutando, el formulario de inicio de sesión también está allí, debería cerrarse, ¿verdad?

¿Cuál debería ser el enfoque correcto para esto? Gracias...

Respuestas a la pregunta(14)

Su respuesta a la pregunta