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.