Cómo cerrar Form1 y abrir Form2

En Form1, cuando la barra de progreso se completa, en la parte de los eventos de timer_tick, el siguiente código lo escribo yo:

frmLogin login = new frmLogin(); login.Show(); timer1.Enabled = false; this.Hide(); 

Entonces, ¿alguna solución para cerrar Form1 lugar de ocultar Form1 ?

Tienes algo llamado ApplicationContext para eso.

Úsalo así:

 ApplicationContext applicationContext = new ApplicationContext(); FormX formX = new FormX(applicationContext); applicationContext.MainForm = formX; Application.Run(applicationContext); 

Al cerrar Form1 , entregar el MainForm

 FormY formY = new FormY(applicationContext); applicationContext.MainForm = formY; 

Otra opción es hacer un ApplicationContext estático. Eso no requeriría pasarlo por ahí.

Lo haría desde la forma principal:

 public partial class MainForm : Form { public MainForm() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); var login=new LoginForm(); if(login.ShowDialog()==DialogResult.OK) { // Validation ok } else { this.Close(); } } } 

Así que antes de que aparezca el formulario principal, carga y muestra el LoginForm . Cuando se hace eso, cierra el LoginForm y muestra el formulario principal.